{"version":3,"sources":["webpack:///webpack/bootstrap eff0702f4d9ca207b78e","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/macro.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/Math/index.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix.js","webpack:///external \"girder_lib\"","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/ViewNode/index.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/parser.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/common.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/utils/common.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ShaderProgram/index.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/utilities.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/DataArray/index.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/data-stream.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///delegated ./node_modules/webpack/buildin/module.js from dll-reference girder_lib","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/DataArray/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Texture/index.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/utils.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Property/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/BufferObject/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/PolyDataMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Texture/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl","webpack:///./~/@girder/dicom-viewer/~/daikon/src/dictionary.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/image.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/iterator.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/tag.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/messages.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/ScalarsToColors/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Framebuffer/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Helper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/vtk.js","webpack:///delegated ./node_modules/pug-runtime/index.js from dll-reference girder_lib","webpack:///./~/@girder/dicom-viewer/~/daikon/lib/charLS-DynamicMemory-browser.js","webpack:///./~/@girder/dicom-viewer/~/daikon/lib/jpeg-baseline.js","webpack:///./~/@girder/dicom-viewer/~/daikon/lib/jpeg-ls.js","webpack:///./~/@girder/dicom-viewer/~/daikon/lib/jpx.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/compression-utils.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/orderedmap.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/rle.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/siemens.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat3.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec3.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec4.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/component-spec.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/frame-header.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/huffman-table.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/main.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/quantization-table.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/scan-component.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/scan-header.js","webpack:///./~/@girder/dicom-viewer/~/pako/index.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/utils/strings.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/adler32.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/constants.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/crc32.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/zstream.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/BoundingBox/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSet/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/ImageData/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/Plane/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/StructuredData/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/AbstractMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageMapper/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorStyle/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Property/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/RenderWindow/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/VertexArrayObject/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/RenderPass/index.js","webpack:///./~/process/browser.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl","webpack:///delegated ./src/rest.js from dll-reference girder_lib","webpack:///delegated ./node_modules/webpack/buildin/global.js from dll-reference girder_lib","webpack:///./~/@girder/dicom-viewer/main.js","webpack:///./~/@girder/dicom-viewer/~/blueimp-md5/js/md5.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/main.js","webpack:///./~/@girder/dicom-viewer/~/daikon/src/series.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat2.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat2d.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat4.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/quat.js","webpack:///./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec2.js","webpack:///./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/decoder.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/deflate.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/inflate.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/deflate.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/gzheader.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/inffast.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/inflate.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/inftrees.js","webpack:///./~/@girder/dicom-viewer/~/pako/lib/zlib/trees.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/index.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/alea.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/tychei.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/xor128.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/xor4096.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/xorshift7.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/lib/xorwow.js","webpack:///./~/@girder/dicom-viewer/~/seedrandom/seedrandom.js","webpack:///./~/@girder/dicom-viewer/views/DicomView.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/LookupTable/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/ScalarsToColors/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSet/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/SelectionNode/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/SelectionNode/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/StructuredData/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Interaction/Style/InteractorStyleImage/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/AbstractMapper3D/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Camera/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageProperty/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageSlice/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorObserver/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorStyle/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Light/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/Static.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Prop/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Prop3D/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindow/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Renderer/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Viewport/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/VolumeProperty/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Actor/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Actor2D/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Camera/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ForwardPass/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ImageMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ImageSlice/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Renderer/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Shader/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ShaderCache/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/SphereMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/StickMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/TextureUnitManager/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Volume/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/VolumeMapper/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory/index.js","webpack:///./~/@girder/dicom-viewer/templates/dicomItem.pug","webpack:///./~/@girder/dicom-viewer/templates/dicomSliceMetadata.pug","webpack:///./~/@girder/dicom-viewer/templates/parseDicomItem.pug","webpack:///./~/@girder/dicom-viewer/stylesheets/dicomItem.styl","webpack:///./~/@girder/dicom-viewer/stylesheets/dicomSliceMetadata.styl","webpack:///./~/path-browserify/index.js","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl","webpack:///./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl","webpack:///delegated ./src/views/View.js from dll-reference girder_lib","webpack:///delegated ./src/auth.js from dll-reference girder_lib","webpack:///delegated ./src/utilities/PluginUtils.js from dll-reference girder_lib","webpack:///delegated ./src/views/body/ItemView.js from dll-reference girder_lib","webpack:///delegated ./src/views/widgets/SearchFieldWidget.js from dll-reference girder_lib","webpack:///delegated ./node_modules/underscore/modules/index-all.js from dll-reference girder_lib","webpack:///delegated ./src/events.js from dll-reference girder_lib","webpack:///delegated ./src/models/FileModel.js from dll-reference girder_lib","webpack:///delegated ./src/collections/FileCollection.js from dll-reference girder_lib","webpack:///delegated ./src/constants.js from dll-reference girder_lib","webpack:///crypto (ignored)"],"names":["setLoggerFunction","vtkLogMacro","vtkInfoMacro","vtkDebugMacro","vtkErrorMacro","vtkWarningMacro","capitalize","obj","get","set","setGet","getArray","setArray","setGetArray","algo","event","newInstance","chain","isVtkObject","traverseInstanceTree","debounce","proxy","proxyPropertyMapping","proxyPropertyState","globalMTime","getCurrentGlobalMTime","fakeConsole","noOp","consoleMethods","forEach","methodName","global","console","window","hasOwnProperty","loggerFunctions","debug","error","info","log","warn","name","fn","str","charAt","toUpperCase","slice","safeArrays","model","Object","keys","key","Array","isArray","concat","enumToString","e","value","find","getStateArrayMapFunc","item","isA","getState","publicAPI","callbacks","mtime","Number","isInteger","classHierarchy","off","index","on","unsubscribe","freeze","isDeleted","deleted","modified","otherMTime","callback","onModified","length","push","getMTime","className","count","getClassName","depth","map","noWarning","noFunction","ret","indexOf","list","subset","getReferenceByName","val","delete","field","el","jsonArchive","assign","vtkClass","keyName","undefined","sortedObj","sort","shallowCopy","other","Error","otherModel","keyList","otherKeyList","keyIdx","splice","join","fieldNames","objectSetterMap","enum","RangeError","TypeError","findSetter","type","getSetter","setter","fields","size","defaultVal","args","array","changeDetected","otherArray","target","v","i","numberOfInputs","numberOfOutputs","inputData","vtk","inputConnection","output","inputArrayToProcess","setInputData","dataset","port","msg","getInputData","setInputConnection","outputPort","getInputConnection","addInputConnection","addInputData","getOutputData","shouldUpdate","update","localMTime","minOutputMTime","Infinity","mt","filter","getOutputPort","outputPortAccess","ins","requestData","getNumberOfInputPorts","getNumberOfOutputPorts","getInputArrayToProcess","inputPort","arrayDesc","ds","fieldAssociation","arrayName","setInputArrayToProcess","attributeType","eventName","previousDelete","invoke","cb","apply","arguments","extend","constructor","initialValues","register","instance","extractFunction","accumulator","visitedInstances","result","modelObj","subObj","func","wait","immediate","timeout","context","later","callNow","clearTimeout","setTimeout","nextProxyId","sectionName","uiDescription","parentDelete","proxyId","getProxyId","propertyNames","p","listProxyProperties","ui","updateProxyProperty","propertyName","propUI","prop","propertyLinkMap","getPropertyLink","id","links","updateInProgress","source","needUpdate","sourceLink","link","newValue","linkToUpdate","pop","bind","subscription","unbind","indexToDelete","linkHandler","getProperties","values","getProxySection","properties","subscriptions","modelKey","property","methodSrc","methodDst","state","defaults","this","applyState","modelKeys","mapping","propValues","macro","randomSeedValue","VTK_MAX_ROTATIONS","VTK_SMALL_NUMBER","notImplemented","method","vtkSwapVectors3","v1","v2","tmp","createArray","Pi","Math","PI","radiansFromDegrees","deg","degreesFromRadians","rad","round","floor","ceil","min","max","ceilLog2","factorial","nearestPowerOfTwo","xi","isPowerOfTwo","x","binomial","m","n","r","beginCombination","nextCombination","status","j","randomSeed","seed","getSeed","random","minValue","maxValue","delta","gaussian","add","a","b","out","subtract","multiplyScalar","vec","scalar","multiplyScalar2D","dot","y","outer","out_3x3","cross","Zx","Zy","Zz","norm","abs","sqrt","sum","normalize","den","perpendiculars","z","theta","x2","y2","z2","dx","dy","dz","c","sintheta","sin","costheta","cos","projectVector","projection","bSquared","scale","dot2D","projectVector2D","distance2BetweenPoints","angleBetweenVectors","crossVect","atan2","gaussianAmplitude","mean","variance","position","distanceFromMean","exp","gaussianWeight","outer2D","out_2x2","norm2D","x2D","normalize2D","determinant2x2","NaN","LUFactor3x3","mat_3x3","index_3","maxI","largest","LUSolve3x3","x_3","linearSolve3x3","y_3","a1","b1","c1","a2","b2","c2","a3","b3","c3","d1","d2","d3","e1","e2","e3","f1","f2","f3","det","v3","multiply3x3_vect3","in_3","out_3","multiply3x3_mat3","a_3x3","b_3x3","multiplyMatrix","rowA","colA","rowB","colB","out_rowXcol","k","transpose3x3","in_3x3","outT_3x3","invert3x3","outI_3x3","identity3x3","determinant3x3","quaternionToMatrix3x3","quat_4","ww","wx","wy","wz","xx","yy","zz","xy","xz","yz","rr","f","s","areMatricesEqual","matA","matB","isEqual","element","every","jacobiN","w","iq","ip","numPos","tresh","t","tau","sm","h","g","vtkROTATE","aa","ii","jj","kk","ll","ceil_half_n","matrix3x3ToQuaternion","eigenvectors","eigenvalues","NTemp","eigenvectorsTemp","multiplyQuaternion","quat_1","quat_2","quat_out","xw","yw","yx","zw","zx","zy","orthogonalize3x3","x1","x3","y3","flip","quat","diagonalize3x3","w_3","v_3x3","maxVal","C","ATemp","VTemp","singularValueDecomposition3x3","u_3x3","vT_3x3","B","d","luFactorLinearSystem","A","temp1","temp2","luSolveLinearSystem","idx","solveLinearSystem","invertMatrix","AI","column","tmp1Size","tmp2Size","estimateMatrixCondition","MAX_VALUE","jacobi","solveHomogeneousLeastSquares","numberOfSamples","xt","xOrder","XXt","eigenvals","eigenvecs","solveLeastSquares","yt","yOrder","checkHomogeneous","homogenFlags","allHomogeneous","hmt","homogRC","someHomogeneous","XXtI","XYt","successFlag","rgb2hsv","rgb","hsv","onethird","onesixth","twothird","cmax","cmin","hsv2rgb","fivesixth","lab2xyz","lab","xyz","L","var_Y","var_X","var_Z","ref_X","ref_Y","ref_Z","xyz2lab","xyz2rgb","rgb2xyz","rgb2lab","lab2rgb","uninitializeBounds","bounds","areBoundsInitialized","clampValue","clampAndNormalizeValue","range","getScalarTypeFittingRange","getAdjustedScalarRange","extentIsWithinOtherExtent","extent1","extent2","boundsIsWithinOtherBounds","bounds1_6","bounds2_6","delta_3","pointIsWithinBounds","point_3","bounds_6","solve3PointCircle","p1","p2","p3","center","v21","v32","v13","v12","v23","v31","norm12","norm23","norm13","crossv21v32","normCross","radius","normCross22","alpha","beta","gamma","inf","negInf","isInf","isFinite","isNaN","createUninitializedBounds","isNan","PASS_TYPES","vtkViewNode","build","prepass","render","traverse","renderPass","passTraversal","getTraverseOperation","children","customRenderPass","getOperation","getViewNodeFor","dataObject","renderable","child","vn","getFirstAncestorOfType","parent","addMissingNode","dobj","renderableChildMap","setVisited","newNode","createViewNode","setParent","addMissingNodes","dataObjs","prepareNodes","visited","removeUnusedNodes","getVisited","getRenderable","includes","dataObj","myFactory","createNode","setRenderable","DEFAULT_VALUES","Map","substitute","search","replace","all","replaceStr","replaced","gflag","regex","RegExp","resultstr","vtkShaderProgram","compileShader","vertexShader","compile","getSource","split","line","getError","fragmentShader","attachShader","setCompiled","cleanup","shaderType","handle","deleteShader","linked","useProgram","setBound","isBound","bound","release","setContext","ctx","geometryShader","inked","uniformLocs","linkProgram","isCompiled","getProgramParameter","LINK_STATUS","lastError","getProgramInfoLog","setLinked","attributeLocs","setUniformMatrix","location","findUniform","uniformMatrix4fv","setUniformMatrix3x3","uniformMatrix3fv","setUniformf","uniform1f","setUniformfv","uniform1fv","setUniformi","uniform1i","setUniformiv","uniform1iv","setUniform2f","uniform2f","setUniform2fv","uniform2fv","setUniform2i","uniform2i","setUniform2iv","uniform2iv","setUniform3f","uniform3f","setUniform3fArray","setUniform3fv","uniform3fv","setUniform3i","uniform3i","setUniform3iv","uniform3iv","setUniform4f","uniform4f","setUniform4fv","uniform4fv","setUniform4i","uniform4i","setUniform4iv","uniform4iv","loc","getUniformLocation","isUniformUsed","isAttributeUsed","getAttribLocation","shader","getHandle","getShaderType","thandle","createProgram","vertexShaderHandle","comntext","detachShader","fragmentShaderHandle","errror","setLastCameraMTime","lastCameraMTime","geometryShaderHandle","compiled","attributesLocs","md5Hash","vtkShader","setShaderType","DefaultDataType","Constants","TUPLE_HOLDER","computeRange","component","tuple","ensureRangeSize","rangeArray","ranges","getDataType","typedArray","prototype","toString","call","STATIC","vtkDataArray","dataChange","getElementComponentSize","BYTES_PER_ELEMENT","getComponent","tupleIdx","compIdx","numberOfComponents","setComponent","getData","getRange","componentIndex","rangeIdx","rangeTuple","setTuple","offset","getTuple","tupleToFill","getTupleLocation","getNumberOfComponents","getNumberOfValues","getNumberOfTuples","dataType","newClone","empty","getName","setData","from","buffer","DataTypeByteSize","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","VtkDataTypes","VOID","CHAR","SIGNED_CHAR","UNSIGNED_CHAR","SHORT","UNSIGNED_SHORT","INT","UNSIGNED_INT","FLOAT","DOUBLE","ObjectType","ARRAY_BUFFER","ELEMENT_ARRAY_BUFFER","TEXTURE_BUFFER","Wrap","Filter","vtkOpenGLTexture","openGLRenderer","openGLRenderWindow","getParent","getContext","getInterpolate","generateMipmap","setMinificationFilter","LINEAR_MIPMAP_LINEAR","LINEAR","setMagnificationFilter","NEAREST","getRepeat","setWrapR","REPEAT","setWrapS","setWrapT","setImage","textureBuildTime","getImage","getImageLoaded","create2DFromImage","activate","sendParameters","input","getPointData","getScalars","ext","getExtent","inScalars","data","indata","scalars","createCubeFromRaw","create2DFromRaw","destroyTexture","deactivate","deleteTexture","numberOfDimensions","components","width","height","resetFormatAndType","createTexture","bindTexture","texParameteri","TEXTURE_MIN_FILTER","getOpenGLFilterMode","minificationFilter","TEXTURE_MAG_FILTER","magnificationFilter","TEXTURE_WRAP_S","getOpenGLWrapMode","wrapS","TEXTURE_WRAP_T","wrapT","getTextureUnit","getTextureUnitForTexture","activateTexture","deactivateTexture","releaseGraphicsResources","rwin","makeCurrent","internalFormat","format","openGLDataType","shaderProgram","autoParameters","sendParametersTime","TEXTURE_2D","TEXTURE_BINDING_2D","oid","getIntegerv","getWebgl2","TEXTURE_WRAP_R","wrapR","getInternalFormat","vtktype","numComps","getDefaultInternalFormat","getDefaultTextureInternalFormat","setInternalFormat","iFormat","InternalFormat","getFormat","getDefaultFormat","RED","RG","RGB","RGBA","LUMINANCE","LUMINANCE_ALPHA","getDefaultDataType","vtkScalarType","UNSIGNED_BYTE","getExtension","getOpenGLDataType","getShiftAndScale","shift","BYTE","emode","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","CLAMP_TO_EDGE","MIRRORED_REPEAT","updateArrayDataType","pixData","pixCount","newArray","scaleTextureToHighestPowerOfTwo","vtkMath","newWidth","newHeight","jFactor","iFactor","joff","jidx","jlow","jhi","jmix","jmix1","ioff","iidx","ilow","ihi","imix","dataArray","scaledData","pixelStorei","UNPACK_ALIGNMENT","texImage2D","TEXTURE_CUBE_MAP","TEXTURE_CUBE_MAP_POSITIVE_X","createDepthFromRaw","DEPTH_COMPONENT","image","needNearestPowerOfTwo","canvas","document","createElement","translate","drawImage","safeImage","create3DFromRaw","TEXTURE_3D","texImage3D","create3DOneComponentFromRaw","numPixelsIn","volumeInfo","volCopyData","outArray","outIdx","inValue","smin","smax","dataTypeToUse","numCompsToUse","encodedScalars","fval","maxTexDim","getParameter","MAX_TEXTURE_SIZE","xstride","ystride","targetWidth","xreps","yreps","targetHeight","yRep","xrepsThisRow","outXContIncr","inY","xRep","inOffset","inX","create3DLighting","scalarTexture","spacing","vinfo","getVolumeInfo","tmpArray","inPtr","outPtr","sliceSize","grad","vec3","create","minMag","maxMag","zedge","yedge","edge","mag","pp","getWidth","getHeight","setOpenGLRenderWindow","rw","getMaximumTextureSize","isCurrent","minLOD","maxLOD","baseLevel","maxLevel","Shading","FLAT","GOURAUD","PHONG","Representation","POINTS","WIREFRAME","SURFACE","Interpolation","vtkOpenGLBufferObject","convertType","internalType","internalHandle","dirty","getType","setType","isReady","generateBuffer","objectTypeGL","createBuffer","upload","alreadyGenerated","bindBuffer","bufferData","STATIC_DRAW","deleteBuffer","objectType","primTypes","Start","Points","Lines","Tris","TriStrips","TrisEdges","TriStripsEdges","End","vtkProperty","ScalarMode","vtkMapper","PassTypes","vtkHardwareSelector","StartEvent","EndEvent","vtkOpenGLPolyDataMapper","buildPass","openGLActor","openGLCamera","getActiveCamera","translucentPass","opaqueZBufferPass","renderDepth","opaquePass","primitives","actor","ren","renderPiece","buildShaders","shaders","getShaderTemplate","openGLSpec","getViewSpecificProperties","OpenGL","shaderReplacements","ShaderReplacements","currReplacement","replaceFirst","ssrc","substituteRes","originalValue","replacementValue","replaceAll","replaceShaderValues","openGLSpecProp","vertexShaderCode","vtkPolyDataVS","vertexSpecProp","VertexShaderCode","Vertex","fragmentShaderCode","vtkPolyDataFS","fragmentSpecProp","FragmentShaderCode","Fragment","geometryShaderCode","geometrySpecProp","GeometryShaderCode","Geometry","replaceShaderColor","VSSource","GSSource","FSSource","lastLightComplexity","lastBoundBO","colorDec","colorImpl","getCABO","getColorComponents","drawingEdges","getInterpolateScalarsBeforeMapping","getColorCoordinates","replaceShaderLight","shadowFactor","lastLightCount","sstring","lc","replaceShaderNormal","getNormalOffset","haveCellNormals","getOpenGLMode","getProperty","getRepresentation","getPrimitiveType","LINES","replaceShaderPositionVC","getPointSize","toFixed","replaceShaderTCoord","getTCoordOffset","tus","getActiveTextures","tNumComp","tcdim","getComponents","getTarget","getColorTextureMap","replaceShaderClip","getNumberOfClippingPlanes","numClipPlanes","getCoincidentParameters","cp","getResolveCoincidentTopology","getEdgeVisibility","primType","getCoincidentTopologyPointOffsetParameter","getCoincidentTopologyLineOffsetParameters","getCoincidentTopologyPolygonOffsetParameters","factor","replaceShaderCoincidentOffset","replaceShaderPicking","getSelector","getCurrentPass","ID_LOW24","getNeedToRebuildShaders","cellBO","lightComplexity","numberOfLights","needLighting","poly","currentInput","getInterpolation","getNormals","getCellData","haveNormals","getLighting","lights","getLightsByReference","light","getSwitch","getIntensity","lightTypeIsHeadLight","getPositional","needRebuild","selector","selectionPass","lastSelectionPass","shaderRebuildString","getProgram","getShaderSourceTime","updateShaders","newShader","getShaderCache","readyShaderProgramArray","setProgram","getVAO","readyShaderProgram","setMapperShaderParameters","setPropertyShaderParameters","setCameraShaderParameters","setLightingShaderParameters","listCallbacks","ShadersCallbacks","object","userData","primitiveIDOffset","getElementCount","VBOBuildTime","getAttributeUpdateTime","addAttributeArray","getVertexOffset","getStride","removeAttributeArray","getTCoordComponents","getColorBO","getColorOffset","getColorBOStride","planeEquations","planeEquation","getClippingPlaneInDataCoords","getMatrix","internalColorTexture","tex","texUnit","tname","getPropColorValue","program","dColor","getColorByReference","intensity","lightColor","ld","getDirection","lightDirection","lightHalfAngle","cam","viewTF","getViewMatrix","mat4","transpose","lp","getTransformedPosition","np","fromValues","transformMat4","getAttenuationValuesByReference","getExponent","getConeAngle","keyMats","getKeyMatrices","camm","getKeyMatrixTime","progm","getLastCameraMTime","getIsIdentity","wcdc","wcvc","normalMatrix","getParallelProjection","actMats","anorms","mat3","multiply","identity","tmpMat4","mcwc","ppty","opacity","getOpacity","aColor","getEdgeColorByReference","getAmbientColorByReference","getAmbient","getDiffuseColorByReference","getDiffuse","sColor","getSpecularColorByReference","getSpecular","getSpecularPower","renderPieceStart","renderProp","updateBufferObjects","renderPieceDraw","representation","gl","drawSurfaceWithEdges","cabo","mode","drawArrays","stride","rep","TRIANGLES","renderPieceFinish","LastBoundBO","invokeEvent","getStatic","getPoints","backfaceCulling","getBackfaceCulling","frontfaceCulling","getFrontfaceCulling","disableCullFace","enableCullFace","cullFace","FRONT","BACK","computeBounds","getInput","getBounds","getNeedToRebuildBufferObjects","buildBufferObjects","vmtime","mapScalars","getColorMapColors","haveCellScalars","scalarMode","getScalarMode","getScalarVisibility","USE_CELL_DATA","USE_CELL_FIELD_DATA","USE_FIELD_DATA","USE_POINT_FIELD_DATA","tcoords","getTCoords","VBOBuildString","points","options","normals","colors","cellOffset","createVBO","getVerts","getLines","getPolys","getStrips","ambientColor","diffuseColor","specularColor","vtkHelper","setPrimitiveType","VectorMode","MAGNITUDE","COMPONENT","RGBCOLORS","ScalarMappingTarget","vtkFramebuffer","getBothMode","FRAMEBUFFER","saveCurrentBindingsAndBuffers","modeIn","saveCurrentBindings","saveCurrentBuffers","previousDrawBinding","FRAMEBUFFER_BINDING","restorePreviousBindingsAndBuffers","restorePreviousBindings","restorePreviousBuffers","bindFramebuffer","glFramebuffer","colorTexture","createFramebuffer","setColorBuffer","texture","framebufferTexture2D","COLOR_ATTACHMENT0","getGLFramebuffer","deleteFramebuffer","depthTexture","getSize","populateFramebuffer","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","framebufferRenderbuffer","DEPTH_ATTACHMENT","previousReadBinding","previousDrawBuffer","previousReadBuffer","vtkOpenGLHelper","win","VAO","CABO","oglwin","setElementCount","shaderSourceTime","attributeUpdateTime","primitiveType","vtkVertexArrayObject","vtkCellArrayBufferObject","factoryMapping","vtkObject","newInst","vtkClassName","INIT_BOUNDS","isValid","getCenter","getLength","getLengths","getXRange","getYRange","getZRange","getMaxLength","l","getDiagonalLength","oppositeSign","getCorners","corners","ix","iy","iz","vtkBoundingBox","clone","equals","setMinPoint","xMin","xMax","yMin","yMax","zMin","zMax","setMaxPoint","addPoint","addBounds","_xMin","_xMax","_yMin","_yMax","_zMin","_zMax","addBox","intersect","bbox","newBounds","bBounds","intersects","MaxPnt","MinPnt","intersectPlane","origin","normal","vtkPlane","evaluate","dir","sign","ti","containsPoint","getMinPoint","getMaxPoint","getBound","contains","reset","setBounds","inflate","sx","sy","sz","DATASET_FIELDS","vtkDataSet","fieldName","vtkDataSetAttributes","vtkImageData","setExtent","inExtent","extent","dataDescription","vtkStructuredData","getDataDescriptionFromExtent","setDimensions","getDimensions","getNumberOfCells","dims","nCells","getNumberOfPoints","getPoint","ijk","coords","StructuredType","EMPTY","SINGLE_POINT","X_LINE","Y_LINE","Z_LINE","XY_PLANE","YZ_PLANE","XZ_PLANE","XYZ_GRID","vout","indexToWorldVec3","copy","extentToBounds","ex","computeTransforms","rotq","fromMat3","direction","trans","fromRotationTranslationScale","indexToWorld","invert","worldToIndex","setDirection","vin","ain","aout","worldToIndexVec3","dvals","PLANE_TOLERANCE","distanceToPlane","distance","projectPoint","xproj","xo","vproj","n2","generalizedProjectPoint","intersectWithLine","outObj","intersection","p21","num","fabsden","fabstolerance","evaluateFunction","point","evaluateGradient","retVal","UNCHANGED","States","vtkInteractorStyle","vtkInteractorStyleTrackballCamera","handleAnimation","pos","interactor","getAnimationEventPosition","getPointerIndex","IS_ROTATE","findPokedRenderer","rotate","invokeInteractionEvent","IS_PAN","pan","IS_DOLLY","dolly","IS_SPIN","spin","handleButton3D","arg","ed","calldata","currentRenderer","pressed","device","Device","RightController","Input","TrackPad","startCameraPose","setAnimationStateOn","IS_CAMERA_POSE","endCameraPose","setAnimationStateOff","handleMove3D","updateCameraPose","camera","oldTrans","getPhysicalTranslation","speed","gamepad","axes","pscale","getPhysicalScale","physicalOrientationToWorldDirection","orientation","setPhysicalTranslation","handleLeftButtonPress","getEventPosition","grabFocus","eventCallbackCommand","getShiftKey","getControlKey","getAltKey","startDolly","startPan","startSpin","startRotate","handleLeftButtonRelease","endDolly","endPan","endSpin","endRotate","releaseFocus","handlePinch","dyf","getScale","getLastScale","setParallelScale","getParallelScale","autoAdjustCameraClippingRange","resetCameraClippingRange","getLightFollowCamera","updateLightsGeometryToFollowCamera","handlePan","rwi","viewFocus","getFocalPoint","computeWorldToDisplay","focalDepth","newPickPoint","computeDisplayToWorld","getTranslation","lastTrans","getLastTranslation","oldPickPoint","motionVector","viewPoint","getPosition","setFocalPoint","setPosition","orthogonalizeViewUp","handleRotate","roll","getRotation","getLastRotation","lastPtr","lastPos","getLastAnimationEventPosition","getView","getViewportSize","deltaElevation","deltaAzimuth","rxf","motionFactor","ryf","azimuth","elevation","getViewportCenter","oldAngle","newAngle","dollyByFactor","vtkAbstractMapper","addClippingPlane","plane","clippingPlanes","removeAllClippingPlanes","removeClippingPlane","getClippingPlanes","setClippingPlanes","planes","nbPlanes","SlicingMode","NONE","X","Y","Z","IS_START","IS_NONE","IS_ZOOM","IS_USCALE","IS_TIMER","IS_FORWARDFLY","IS_REVERSEFLY","IS_TWO_POINTER","IS_ANIM_OFF","IS_ANIM_ON","IS_WINDOW_LEVEL","IS_PICK","IS_SLICE","ColorMode","DEFAULT","MAP_SCALARS","DIRECT_SCALARS","USE_POINT_DATA","GetArray","BY_ID","BY_NAME","setColor","color","setDiffuseColor","setAmbientColor","setSpecularColor","computeCompositeColor","getColor","ambient","diffuse","specular","addShaderVariable","setInterpolationToFlat","setInterpolation","setInterpolationToGouraud","setInterpolationToPhong","getInterpolationAsString","interpolation","setRepresentationToWireframe","setRepresentation","setRepresentationToSurface","setRepresentationToPoints","getRepresentationAsString","edgeColor","specularPower","edgeVisibility","pointSize","lineWidth","lighting","shading","materialName","Unknown","LeftController","Trigger","Grip","ApplicationMenu","vtkOpenGLRenderWindow","updateWindow","setAttribute","style","display","useOffScreen","cursor","cursorVisibility","getRenderersByReference","initialize","initialized","get3DContext","textureUnitManager","vtkOpenGLTextureUnitManager","shaderCache","blendFuncSeparate","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","ONE","enable","BLEND","setContainer","parentNode","removeChild","appendChild","isInViewport","viewport","vCoords","getViewportByReference","displayToNormalizedDisplay","normalizedDisplayToDisplay","worldToView","renderer","viewToWorld","worldToDisplay","val2","viewToNormalizedDisplay","displayToWorld","normalizedDisplayToView","normalizedDisplayToViewport","viewportToNormalizedViewport","normalizedViewportToViewport","displayToLocalDisplay","viewportToNormalizedDisplay","getPixelData","y1","pixels","readPixels","get2DContext","preserveDrawingBuffer","webgl2Supported","WebGL2RenderingContext","webgl2","defaultToWebgl2","navigator","getVRDisplays","then","displays","vrDisplay","depthNear","depthFar","addEventListener","preventDefault","restoreContext","startVR","isConnected","requestPresent","oldCanvasSize","getRenderers","resetCamera","vrFrameData","VRFrameData","getInteractor","switchToVRAnimation","vrRender","stopVR","returnFromVRAnimation","exitPresent","cancelAnimationFrame","vrSceneFrame","setProjectionMatrix","setViewport","traverseAllPasses","updateGamepads","displayId","requestAnimationFrame","getFrameData","computeViewParametersFromPhysicalMatrix","leftViewMatrix","leftProjectionMatrix","rightViewMatrix","rightProjectionMatrix","submitFrame","rp","vtkRenderPass","setCurrentOperation","textureResourceIds","activeTexture","TEXTURE0","activeUnit","getTextureUnitManager","allocate","free","useFloat","R8","RG8","RGB8","RGBA8","R16F","RG16F","RGB16F","RGBA16F","getCanvasDataURL","toDataURL","captureImage","renderPasses","notifyImageReady","invokeImageReady","disableDepthMask","depthMaskEnabled","depthMask","enableDepthMask","cullFaceEnabled","disable","CULL_FACE","vtkOpenGLViewNodeFactory","vtkShaderCache","vtkForwardPass","appVersion","platform","InstallTrigger","vtkOpenGLVertexArrayObject","exposedMethod","instancingExtension","forceEmulation","extension","supported","handleVAO","createVertexArray","createVertexArrayOES","bindVertexArrayOES","bindVertexArray","ibuff","buffers","buff","iatt","attributes","attrIt","matrixCount","isMatrix","enableVertexAttribArray","vertexAttribPointer","divisor","vertexAttribDivisorANGLE","vertexAttribDivisor","disableVertexAttribArray","shaderProgramChanged","deleteVertexArrayOES","deleteVertexArray","handleProgram","elementType","elementTupleSize","addAttributeArrayWithDivisor","attribs","Index","buffFound","found","addAttributeMatrixWithDivisor","currentOperation","currentTraverseOperation","viewNode","currentParent","preDelegateOperations","delegates","postDelegateOperations","ItemView","once","AccessType","WRITE","$","prepend","currentUser","has","DicomItemView","parentView","$el","insertAfter","events","url","done","resp","trigger","icon","text","fail","SearchFieldWidget","addMode","DicomFileModel","FileModel","getSlice","_slice","xhrFields","responseType","dataView","DataView","daikon","Series","parseImage","DicomFileCollection","FileCollection","_selectedIndex","sortField","selectIndex","at","selectNext","newIndex","selectPrevious","selectFirst","selectLast","DicomSliceMetadataWidget","View","settings","setSlice","html","tags","_getSliceTags","tagCache","_extractSliceTags","_","tag","sublist","vr","isPixelData","Dictionary","getDescription","group","startsWith","endsWith","sortBy","toLowerCase","WeakMap","DicomSliceImageWidget","destroy","unbindEvents","vtkRenderer","setBackground","renWin","vtkRenderWindow","addRenderer","glWin","setSize","addView","vtkRenderWindowInteractor","vtkInteractorStyleImage","setInteractorStyle","setView","vtkImageSlice","addActor","mapper","vtkImageMapper","_getImageData","setMapper","getActiveCameraAndResetIfCreated","bindEvents","start","autoLevels","autoZoom","rerenderSlice","rerender","wc","setColorWindow","setColorLevel","zoom","up","setViewUp","zoomIn","zoomOut","imageDataCache","_extractImageData","rows","getRows","cols","getCols","rowSpacing","getPixelSpacing","colSpacing","imageData","setOrigin","setSpacing","getInterpretedData","setScalars","_files","parseInt","play","pause","_sliceImageView","files","_sliceMetadataView","_playing","_playInterval","playInterval","listenTo","_onSelectionChanged","selectedFile","selectedIndex","_toggleControls","attr","always","girderEnable","step","BELOW_RANGE_COLOR_INDEX","ABOVE_RANGE_COLOR_INDEX","NAN_COLOR_INDEX","vtkLookupTable","isOpaque","opaqueFlagBuildTime","opaque","nanColor","useBelowRangeColor","belowRangeColor","useAboveRangeColor","aboveRangeColor","table","opaqueFlag","usingLogScale","getNumberOfAvailableColors","linearIndexLookup","dIndex","maxIndex","linearLookup","indexedLookupFunction","getAnnotatedValueIndexInternal","lookupShiftAndScale","mapScalarsThroughTable","outFormat","inputOffset","lookupFunc","indexedLookup","trange","getMappingRange","getNumberOfColors","getAlpha","inIncr","outputV","inputV","cptr","forceBuild","hinc","sinc","vinc","ainc","numberOfColors","hueRange","saturationRange","valueRange","alphaRange","rgba","buildSpecialColors","buildTime","tptr","base","vtkScalarsToColors","intColorToUChar","floatColorToUChar","setVectorModeToMagnitude","setVectorMode","setVectorModeToComponent","setVectorModeToRGBColors","setAnnotations","annotations","annotationArray","annotation","updateAnnotatedValueMap","setAnnotation","checkForAnnotatedValue","getNumberOfAnnotatedValues","getAnnotatedValue","getAnnotation","getAnnotatedValueIndex","removeAnnotation","needToRemove","resetAnnotations","annotatedValueMap","getAnnotationColor","getIndexedColor","parseFloat","na","colorMode","componentIn","newColors","convertToRGBA","newscalars","mapVectorsThroughTable","mapVectorsToMagnitude","compsToUse","outputFormat","vectorComponentIn","vectorSizeIn","vectorMode","getVectorMode","vectorSize","vectorComponent","inComponents","getVectorComponent","getVectorSize","magValues","luminanceToRGBA","convtFun","newValues","luminanceAlphaToRGBA","rGBToRGBA","rGBAToRGBA","numComp","numTuples","setRange","setMappingRange","mappingRange","FieldDataTypes","UNIFORM","DATA_OBJECT_FIELD","COORDINATE","POINT_DATA","POINT","POINT_FIELD_DATA","CELL","CELL_FIELD_DATA","VERTEX","VERTEX_FIELD_DATA","EDGE","EDGE_FIELD_DATA","ROW","ROW_DATA","FieldAssociations","FIELD_ASSOCIATION_POINTS","FIELD_ASSOCIATION_CELLS","FIELD_ASSOCIATION_NONE","FIELD_ASSOCIATION_POINTS_THEN_CELLS","FIELD_ASSOCIATION_VERTICES","FIELD_ASSOCIATION_EDGES","FIELD_ASSOCIATION_ROWS","NUMBER_OF_ASSOCIATIONS","AttributeTypes","SCALARS","VECTORS","NORMALS","TCOORDS","TENSORS","GLOBALIDS","PEDIGREEIDS","EDGEFLAG","NUM_ATTRIBUTES","AttributeLimitTypes","MAX","EXACT","NOLIMIT","CellGhostTypes","DUPLICATECELL","HIGHCONNECTIVITYCELL","LOWCONNECTIVITYCELL","REFINEDCELL","EXTERIORCELL","HIDDENCELL","PointGhostTypes","DUPLICATEPOINT","HIDDENPOINT","AttributeCopyOperations","COPYTUPLE","INTERPOLATE","PASSDATA","ALLCOPY","ghostArrayName","vtkFieldData","superGetState","arrays","initializeFields","copyAllOn","clearFieldFlags","copyFieldFlags","copyStructure","getCopyFieldFlags","getNumberOfArrays","getNumberOfActiveArrays","addArray","arr","removeAllArrays","removeArray","entry","removeArrayByIndex","arrayIdx","getArrays","arraySpec","getArrayByIndex","getArrayByName","reduce","getArrayWithIndex","hasArray","getArrayName","getFlag","passData","copyFlag","doCopyAllOff","copyFieldOn","copyFieldOff","doCopyAllOn","copyAllOff","deepCopy","arrNew","copyFlags","attrTypes","cleanAttributeType","attType","cleanAttType","ee","checkNumberOfComponents","uncleanAttType","currentAttribute","setActiveAttributeByName","setActiveAttributeByIndex","getActiveAttribute","activeVal","da","copyAttributeFlags","op","attCopyOp","ty","dataArrays","ref","activeScalars","activeVectors","activeTensors","activeNormals","activeTCoords","activeGlobalIds","activePedigreeIds","SelectionContent","VALUES","INDICES","FRUSTUM","LOCATIONS","THRESHOLDS","BLOCKS","QUERY","SelectionField","FIELD","vtkSelectionNode","contentType","fieldType","selectionList","inExt","dataDim","startWindowLevel","startState","setCurrentImageNumber","currentImageNumber","handleObservers","invokeStartWindowLevelEvent","currentImageProperty","windowLevelInitial","getColorWindow","getColorLevel","endWindowLevel","invokeEndWindowLevelEvent","stopState","startSlice","endSlice","superHandleAnimation","windowLevel","superHandleLeftButtonPress","windowLevelStartPosition","interactionMode","lastSlicePosition","superHandleLeftButtonRelease","windowLevelCurrentPosition","invokeWindowLevelEvent","mWindow","level","newWindow","newLevel","getClippingRange","getDistance","viewportHeight","angle","getViewAngle","tan","setDistance","propMatch","targetIndex","getPickable","props","getViewProps","imageProp","foundImageProp","xViewRightVector","xViewUpVector","yViewRightVector","yViewUpVector","zViewRightVector","zViewUpVector","vtkAbstractMapper3D","diff","propMatrix","hnormal","clipPlanes","mat","getNormal","getOrigin","v4","vtkCamera","viewMatrix","projectionMatrix","w2pMatrix","dopbasis","upbasis","tmpvec1","tmpvec2","tmpvec3","vt","viewUp","computeDistance","focalPoint","directionOfProjection","computeViewPlaneNormal","viewPlaneNormal","amount","setRoll","getRoll","eye","viewUpVec4","vec4","rotateMatrix","viewDir","newPosition","fp","yaw","newFocalPoint","axis","pitch","parallelProjection","parallelScale","viewAngle","setThickness","thickness","setObliqueAngles","ori","getPhysicalToWorldMatrix","oriq","coriq","qdir","conjugate","getWorldToPhysicalMatrix","physicalScale","physicalTranslation","physVRight","physicalViewNorth","physicalViewUp","phystoworld","oldDist","setDirectionOfProjection","lookAt","getProjectionMatrix","aspect","nearz","farz","cWidth","clippingRange","cRange","xmin","windowCenter","xmax","ymin","ymax","ortho","useOffAxisProjection","useHorizontalViewAngle","znear","zfar","getCompositeProjectionMatrix","vMat","pMat","getFrustumPlanes","getOrientation","getOrientationWXYZ","setDeviceAngles","screen","rotmat","rotateZ","rotateX","rotateY","dop","vup","newdop","newvup","transformMat3","setOrientationWXYZ","degrees","quatMat","q","setAxisAngle","toMat4","screenBottomLeft","screenBottomRight","screenTopRight","freezeFocalPoint","useScissor","setZSliceFromCamera","setZSlice","setZSliceIndex","currentSlicingMode","setYSliceIndex","setYSlice","setXSliceIndex","setXSlice","useCustomExtents","customDisplayExtent","zSlice","getIsOpaque","intersectWithLineForPointPicking","xSlice","ySlice","worldOrigin","worldNormal","absoluteIJK","intersectWithLineForCellPicking","displayExtent","renderToRectangle","sliceAtFocalPoint","vtkImageProperty","colorWindow","colorLevel","rGBTransferFunction","mTime","time","getActors","getImages","hasTranslucentPolygonalGeometry","makeProperty","bds","mapperBounds","boundsMTime","zip","row","computeMatrix","tmp4","matrix","pt","getMinXBound","getMaxXBound","getMinYBound","getMaxYBound","getMinZBound","getMaxZBound","getRedrawMTime","getInputAlgorithm","getRGBTransferFunction","getSupportsSelection","vtkProp3D","view","getRenderWindow","getViews","vtkInteractorObserver","setInteractor","setEnabled","charObserverTag","deleteObserverTag","onCharEvent","keyPressCallbackCommand","onDeleteEvent","enabled","defaultRenderer","priority","keyPressActivationValue","stateNames","Rotate","Pan","Spin","Dolly","Zoom","Timer","TwoPointer","UniformScale","CameraPose","unsubscribes","handleChar","getKeyCode","ac","anActor","setCurrentRenderer","animationState","requestAnimation","cancelAnimation","invokeStartInteractionEvent","invokeEndInteractionEvent","LIGHT_TYPES","vtkLight","transformMatrix","getTransformedFocalPoint","directionMTime","setDirectionAngle","elevationRadians","azimuthRadians","setPositional","setLightTypeToHeadLight","setLightType","setLightTypeToCameraLight","setLightTypeToSceneLight","setTransformMatrix","lightType","lightTypeIsSceneLight","lightTypeIsCameraLight","switch","positional","exponent","coneAngle","attenuationValues","shadowAttenuation","addCoincidentTopologyMethods","nameList","unit","CATEGORIES","getResolveCoincidentTopologyPolygonOffsetFaces","setResolveCoincidentTopologyPolygonOffsetFaces","setResolveCoincidentTopology","setResolveCoincidentTopologyToDefault","setResolveCoincidentTopologyToOff","setResolveCoincidentTopologyToPolygonOffset","getResolveCoincidentTopologyAsString","resolveCoincidentTopologyPolygonOffsetFaces","resolveCoincidentTopology","RESOLVE_COINCIDENT_TOPOLOGY_MODE","staticOffsetModel","Polygon","Line","Point","staticOffsetAPI","CoincidentTopologyHelper","static","setForceCompileOnly","forceCompileOnly","createDefaultLookupTable","lookupTable","getColorModeAsString","setColorModeToDefault","setColorMode","setColorModeToMapScalars","setColorModeToDirectScalars","getScalarModeAsString","setScalarModeToDefault","setScalarMode","setScalarModeToUsePointData","setScalarModeToUseCellData","setScalarModeToUsePointFieldData","setScalarModeToUseCellFieldData","setScalarModeToUseFieldData","otherStaticMethods","topologyOffset","globalValue","getResolveCoincidentTopologyPolygonOffsetParameters","localValue","getRelativeCoincidentTopologyPolygonOffsetParameters","getResolveCoincidentTopologyLineOffsetParameters","getRelativeCoincidentTopologyLineOffsetParameters","getResolveCoincidentTopologyPointOffsetParameters","getRelativeCoincidentTopologyPointOffsetParameters","getAbstractScalars","arrayAccessMode","arrayId","scalarVisibility","pd","cd","fd","getFieldData","colorByArrayName","colorCoordinates","colorTextureMap","colorMapColors","useLookupTableScalarRange","getLookupTable","scalarRange","canUseTextureMapForColoring","mapScalarsToTexture","lut","scalarToTextureCoordinate","scalarValue","rangeMin","invRangeWidth","texCoordS","texCoordT","createColorTextureCoordinates","numScalars","tableRange","tableNumberOfColors","useLogScale","scalarTexelWidth","paddedRange","outputCount","scalarIdx","magnitude","applyLogScale","outputs","inputValue","getLogRange","origAlpha","setAlpha","scalarComponent","interpolateScalarsBeforeMapping","getIndexedLookup","clearColorArrays","getPrimativeCount","pcount","verts","lines","triangles","acquireInvertibleLookupTable","valueToColor","colorToValue","useInvertibleColorFor","clearInvertibleColor","renderTime","fieldDataTupleId","useInvertibleColors","invertibleScalars","viewSpecificProperties","vtkProp","m1","textures","m2","getNestedProps","getActors2D","getVolumes","pick","hasKey","setEstimatedRenderTime","estimatedRenderTime","savedEstimatedRenderTime","restoreEstimatedRenderTime","addEstimatedRenderTime","setAllocatedRenderTime","allocatedRenderTime","getTextures","hasTexture","addTexture","removeTexture","newTextureList","removeAllTextures","visibility","pickable","dragable","useBounds","renderTimeMultiplier","paths","addPosition","deltaXYZ","rotation","oaxis","getAxisAngle","addOrientation","setOrientation","rotateWXYZ","fromQuat","setUserMatrix","userMatrix","matrixMTime","isIdentity","getUserMatrix","updateIdentityFlag","userMatrixMTime","cachedProp3D","transform","hasRenderer","setRenderWindow","renderers","removeRenderer","hasView","views","removeView","getStatistics","results","propCount","mpr","getMapper","captureImages","neverRendered","numberOfLayers","deviceInputMap","eventsWeHandle","stopPropagation","startEventLoop","aren","interactorStyle","setEventPosition","xv","yv","zv","pointer","pointerIndex","lastEventPositions","eventPositions","setAnimationEventPosition","lastAnimationEventPositions","animationEventPositions","getLastEventPosition","handleWheel","handleMouseDown","querySelector","handleKeyPress","handleKeyUp","handleMouseUp","handleMouseMove","handleTouchStart","handleTouchEnd","handleTouchMove","removeEventListener","controlKey","ctrlKey","altKey","shiftKey","keyCode","String","fromCharCode","charCode","keyPressEvent","charEvent","keyUpEvent","clientX","clientHeight","clientY","which","leftButtonPressEvent","middleButtonPressEvent","rightButtonPressEvent","updateAnimationEventPositionsAtRequest","updateAnimationEventPositionsAtHandle","requestor","requestAnimationCount","lastFrameTime","lastFrameStart","Date","getTime","animationRequest","isAnimating","vrAnimation","forceRender","gamepads","getGamepads","gp","lastGamepadValues","buttons","button3DEvent","pose","hand","move3DEvent","setPointerIndex","mouseMoveEvent","currTime","FrameTime","animationEvent","wheelDelta","wheelDeltaX","detail","wheelDeltaY","setScale","pinchEvent","wheelTimeoutID","leftButtonReleaseEvent","middleButtonReleaseEvent","rightButtonReleaseEvent","touches","changedTouches","touch","identifier","startTouchEvent","endTouchEvent","rc","interactiveren","viewportren","getInteractive","enableRender","invokeRenderEvent","lowerFirst","recognizeGestures","pointersDownCount","recognizeGesture","invokeAnimation","invokeMouseMove","pointersDown","startingEventPositions","currentGesture","endPinchEvent","endRotateEvent","endPanEvent","posVals","startVals","originalDistance","newDistance","originalAngle","angleDeviation","thresh","clientWidth","pinchDistance","rotateDistance","panDistance","startPinchEvent","startRotateEvent","translation","startPanEvent","setRotation","rotateEvent","setTranslation","panEvent","lastScale","rot","lastRotation","lastTranslation","invokeLeftButtonRelease","invokeLeftButtonPress","renderWindow","picker","pickingManager","lightFollowCamera","desiredUpdateRate","stillUpdateRate","background","COMPUTE_VISIBLE_PROP_BOUNDS_EVENT","RESET_CAMERA_CLIPPING_RANGE_EVENT","RESET_CAMERA_EVENT","updateCamera","activeCamera","setPositionFrom","getPositionByReference","setFocalPointFrom","getFocalPointByReference","updateLightGeometry","allocateTime","updateGeometry","getVTKWindow","setLayer","layer","setPreserveColorBuffer","setActiveCamera","makeCamera","addViewProp","addVolume","removeActor","actors","removeViewProp","removeVolume","volume","volumes","addLight","removeLight","removeAllLights","addCuller","removeCuller","setLightCollection","makeLight","createLight","automaticLightCreation","createdLight","normalizedDisplayToWorld","vpd","worldToNormalizedDisplay","computeVisiblePropBounds","allBounds","nothingVisible","getVisibility","getUseBounds","boundsToUse","getViewPlaneNormal","setViewAngle","w1","w2","w3","getViewUp","setPhysicalScale","getViewPlaneNormalByReference","dist","minGap","clippingRangeExpansion","nearClippingPlaneTolerance","setClippingRange","vtkWindow","visibleActorCount","visibleVolumeCount","m3","pickProp","pickRender","pickGeometry","getTransparent","preserveColorBuffer","getTiledAspectRatio","isActiveCameraCreated","pickedProp","timeFactor","twoSidedLighting","lastRenderTimeInSeconds","numberOfPropsRendered","propArray","pathArray","preserveDepthBuffer","interactive","erase","draw","useShadows","useDepthPeeling","occlusionRatio","maximumNumberOfPeels","delegate","texturedBackground","backgroundTexture","pass","vtkViewport","hasViewProp","newPropList","removeAllViewProps","getViewPropsWithNestedProps","allprops","addActor2D","removeActor2D","actors2D","displayToView","viewToDisplay","nvp","normalizedDisplayToNormalizedViewport","normalizedViewportToView","viewToNormalizedViewport","normalizedViewportToNormalizedDisplay","PickPropFrom","background2","gradientBackground","pixelAspect","InterpolationType","FAST_LINEAR","vtkOpenGLActor","ogltextures","activeTextures","oglmapper","traverseOpaqueZBufferPass","traverseOpaquePass","traverseTranslucentPass","activateTextures","queryPass","incrementOpaqueActorCount","incrementTranslucentActorCount","keyMatrixTime","keyMatrices","fromMat4","vtkOpenGLActor2D","vtkOpenGLCamera","tsize","getTiledSizeAndOrigin","lowerLeftU","lowerLeftV","usize","vsize","scissor","volumePass","lastRenderer","aspectRatio","getAspectRatio","vcdc","vtkOpenGLCellArrayBufferObject","cellArray","inRep","outRep","elementCount","blockSize","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorComponents","colorOffset","pointData","normalData","tcoordData","colorData","textureComponents","colorBO","vtkBufferObject","pointIdx","normalIdx","tcoordIdx","colorIdx","cellCount","addAPoint","cellBuilders","anythingToPoints","numPoints","cellPts","linesToWireframe","polysToWireframe","stripsToWireframe","polysToSurface","npts","stripsToSurface","cellCounters","countFunc","caboCount","packedUCVBO","packedVBO","vboidx","ucidx","addAPointFunc","colorBOStride","setCoordShiftAndScaleMethod","shiftScaleMethod","setCoordShift","shiftArray","setCoordScale","scaleArray","tcoordBO","getChildren","renNode","opaqueActorCount","translucentActorCount","volumeCount","depthRequested","framebuffer","vtkOpenGLFramebuffer","fbSize","getZBufferTexture","getColorTexture","incrementVolumeCount","vtkOpenGLGlyph3DMapper","superClass","hardwareSupport","multiply4x4WithOffset","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b0","getColorArray","updateGlyphShaderParameters","normalMatrixUsed","mcvcMatrixUsed","carray","garray","narray","ofs","tmpMat3","b00","b01","b02","b10","b11","b12","b20","b21","b22","mcdcMatrix","mcvcMatrix","cdata","tmpColor","getMatrixArray","getNormalArray","numPts","drawArraysInstancedANGLE","drawArraysInstanced","glyphBOBuildTime","matrixBuffer","normalBuffer","colorBuffer","buildArrays","getBuildTime","mcwcMatrix","MIN_KNOWN_PASS","ACTOR_PASS","COMPOSITE_INDEX_PASS","MAX_KNOWN_PASS","vtkOpenGLHardwareSelector","releasePixBuffers","pixBuffer","beginSelection","maxAttributeId","clear","setSelector","setPreserveDepthBuffer","hitProps","endSelection","preCapturePass","postCapturePass","select","sel","captureBuffers","generateSelection","area","originalBackground","getBackgroundByReference","currentPass","passRequired","savePixelBuffer","passNo","buildPropHitList","pixelbuffer","convert","setPropColorValueFromInt","idOffset","renderCompositeIndex","renderAttributeId","attribid","getPropFromID","passTypeToString","isPropHit","pb","propColorValue","getPixelInformation","inDisplayPosition","maxDistance","outSelectedPosition","maxDist","displayPosition","actorid","valid","propID","dispPos","curPos","convertSelection","fieldassociation","dataMap","setContentType","setFieldType","compositeID","pixelCount","setSelectionList","attributeIDs","getInfoHash","hash","attributeID","attach","vtkOpenGLImageMapper","openGLImageSlice","tris","openGLTexture","getSliceAtFocalPoint","FALSE","cw","cl","cfun","oglShiftScale","texColorUnit","i2wmat4","getIndexToWorld","imagemat","cTable","cfunToString","colorTextureString","cfTable","getTable","nSlice","getZSlice","sliceOffset","getCurrentSlicingMode","getXSlice","getYSlice","setGenerateMipmap","ptsArray","tcoordArray","basicScalars","subarray","setName","cells","vtkOpenGLImageSlice","MCWCMatrix","vtkOpenGLPixelSpaceCallbackMapper","texels","getUseZValues","zbt","fb","getFramebuffer","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","invokeCallback","setDepthRequested","vtkOpenGLRenderer","updateLights","clearMask","clearColor","COLOR_BUFFER_BIT","getPreserveDepthBuffer","clearDepth","DEPTH_BUFFER_BIT","colorMask","DEPTH_TEST","cameraPass","getSizeByReference","vport","tileViewPort","vpu","vpv","ndvp","vpu2","vpv2","ndvp2","ts","SCISSOR_TEST","stype","VERTEX_SHADER","FRAGMENT_SHADER","createShader","shaderSource","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","SET_GET_FIELDS","nFSSource","fragDepthString","gl2","VERSION","version","nVSSource","nGSSource","vertexCode","fragmentCode","geometryCode","getShaderProgram","getCompiled","bindShader","hashInput","shaderPrograms","sps","getVertexShader","setSource","getFragmentShader","getGeometryShader","setMd5Hash","releaseCurrentShader","sp","astShaderBound","lastShaderBound","vtkOpenGLSphereMapper","vtkSphereMapperVS","replacement","fragString","vbo","pointArray","scales","getScaleArray","setColorOffset","setColorBOStride","setColorBO","setColorComponents","setStride","cos30","vboIdx","ucIdx","getRadius","vtkOpenGLStickMapper","vtkStickMapperVS","picking","orientationArray","getOrientationArray","verticesArray","deleteTable","numberOfTextureUnits","textureUnits","MAX_TEXTURE_IMAGE_UNITS","isAllocated","allocateUnit","textureUnitId","vtkViewNodeFactory","registerOverride","vtkOpenGLVolume","vtkOpenGLVolumeMapper","vtkGenericWidgetRepresentation","traverseVolumePass","zBufferTexture","opacityTexture","lightingTexture","jitterTexture","openGLVolume","vtkVolumeVS","vtkVolumeFS2","vtkVolumeFS","iType","getInterpolationType","gopacity","getUseGradientOpacity","volInfo","spc","getSpacing","maxSamples","getSampleDistance","lightNum","getLights","getShade","lastZBufferTexture","getRenderTargetSize","crange","dcxmin","dcxmax","dcymin","dcymax","idxToView","idxNormalMatrix","getMaximumSamplesPerRay","vctoijk","divide","pos2","dcvc","camDOP","getDirectionOfProjection","lightDir","halfAngle","sscale","vprop","ofun","getScalarOpacity","oRange","lightingInfo","gomin","getGradientOpacityMinimumOpacity","gomax","getGradientOpacityMaximumOpacity","goRange","getGradientOpacityMinimumValue","getGradientOpacityMaximumValue","lastXYF","fvp","getAutoAdjustSampleDistances","rft","getLastFrameTime","avgFrameTime","avgWindowArea","txyf","getDesiredUpdateRate","targetXYF","getStillUpdateRate","getImageSampleDistance","xyf","copyShader","copyVAO","Bounds","bounnds","oTable","opacityFactor","getScalarOpacityUnitDistance","opacityTextureString","oWidth","ofTable","scalarTextureString","lightingTextureString","colortextureString","fullViewportTime","overrides","cpt","isObject","setMyFactory","pug","require","template","locals","pug_html","pug_mixins","pug_interp","pug_debug_filename","pug_debug_line","pug_debug_sources","locals_for_with","err","rethrow","module","exports","$$obj","pug_index0","$$l","escape"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA,2CAA2C,cAAc;;QAEzD;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;;;;;;;;;;;;;;;;QCtBgBA,iB,GAAAA,iB;QAMAC,W,GAAAA,W;QAIAC,Y,GAAAA,Y;QAIAC,a,GAAAA,a;QAIAC,a,GAAAA,a;QAIAC,e,GAAAA,e;QAQAC,U,GAAAA,U;QAiCAC,G,GAAAA,G;QA8KAC,G,GAAAA,G;QAgFAC,G,GAAAA,G;QAoBAC,M,GAAAA,M;QAUAC,Q,GAAAA,Q;QAaAC,Q,GAAAA,Q;QA4DAC,W,GAAAA,W;QAeAC,I,GAAAA,I;QAgOAC,K,GAAAA,K;QAqDAC,W,GAAAA,W;QAoBAC,K,GAAAA,K;QAQAC,W,GAAAA,W;QAIAC,oB,GAAAA,oB;QAmDAC,Q,GAAAA,Q;QAiCAC,K,GAAAA,K;QAuIAC,oB,GAAAA,oB;QA4CAC,kB,GAAAA,kB;;AA1hChB;;;;;;;;;;AAEA,IAAIC,cAAc,CAAlB;;AAEA,SAASC,qBAAT,GAAiC;AAC/B,SAAOD,WAAP;AACD;;AAED;AACA;AACA;AACA;;AAEA,IAAME,cAAc,EAApB;AACA,SAASC,IAAT,GAAgB,CAAE;;AAElB,IAAMC,iBAAiB,CACrB,KADqB,EAErB,OAFqB,EAGrB,MAHqB,EAIrB,MAJqB,EAKrB,OALqB,EAMrB,MANqB,EAOrB,SAPqB,EAQrB,OARqB,EASrB,UATqB,CAAvB;AAWAA,eAAeC,OAAf,CAAuB,UAACC,UAAD,EAAgB;AACrCJ,cAAYI,UAAZ,IAA0BH,IAA1B;AACD,CAFD;;AAIAI,OAAOC,OAAP,GAAiBC,OAAOD,OAAP,CAAeE,cAAf,CAA8B,KAA9B,IACbD,OAAOD,OADM,GAEbN,WAFJ;;AAIA,IAAMS,kBAAkB;AACtBC,SAAOT,IADe,EACT;AACbU,SAAON,OAAOC,OAAP,CAAeK,KAAf,IAAwBV,IAFT;AAGtBW,QAAMP,OAAOC,OAAP,CAAeM,IAAf,IAAuBX,IAHP;AAItBY,OAAKR,OAAOC,OAAP,CAAeO,GAAf,IAAsBZ,IAJL;AAKtBa,QAAMT,OAAOC,OAAP,CAAeQ,IAAf,IAAuBb;AALP,CAAxB;;AAQO,SAAS3B,iBAAT,CAA2ByC,IAA3B,EAAiCC,EAAjC,EAAqC;AAC1C,MAAIP,gBAAgBM,IAAhB,CAAJ,EAA2B;AACzBN,oBAAgBM,IAAhB,IAAwBC,MAAMf,IAA9B;AACD;AACF;;AAEM,SAAS1B,WAAT,GAA8B;AACnCkC,kBAAgBI,GAAhB;AACD;;AAEM,SAASrC,YAAT,GAA+B;AACpCiC,kBAAgBG,IAAhB;AACD;;AAEM,SAASnC,aAAT,GAAgC;AACrCgC,kBAAgBC,KAAhB;AACD;;AAEM,SAAShC,aAAT,GAAgC;AACrC+B,kBAAgBE,KAAhB;AACD;;AAEM,SAAShC,eAAT,GAAkC;AACvC8B,kBAAgBK,IAAhB;AACD;;AAED;AACA;AACA;;AAEO,SAASlC,UAAT,CAAoBqC,GAApB,EAAyB;AAC9B,SAAOA,IAAIC,MAAJ,CAAW,CAAX,EAAcC,WAAd,KAA8BF,IAAIG,KAAJ,CAAU,CAAV,CAArC;AACD;;AAED;AACA;AACA;;AAEA,SAASC,UAAT,CAAoBC,KAApB,EAA2B;AACzBC,SAAOC,IAAP,CAAYF,KAAZ,EAAmBnB,OAAnB,CAA2B,UAACsB,GAAD,EAAS;AAClC,QAAIC,MAAMC,OAAN,CAAcL,MAAMG,GAAN,CAAd,CAAJ,EAA+B;AAC7BH,YAAMG,GAAN,IAAa,GAAGG,MAAH,CAAUN,MAAMG,GAAN,CAAV,CAAb;AACD;AACF,GAJD;AAKD;;AAED;;AAEA,SAASI,YAAT,CAAsBC,CAAtB,EAAyBC,KAAzB,EAAgC;AAC9B,SAAOR,OAAOC,IAAP,CAAYM,CAAZ,EAAeE,IAAf,CAAoB,UAACP,GAAD;AAAA,WAASK,EAAEL,GAAF,MAAWM,KAApB;AAAA,GAApB,CAAP;AACD;;AAED,SAASE,oBAAT,CAA8BC,IAA9B,EAAoC;AAClC,MAAIA,KAAKC,GAAT,EAAc;AACZ,WAAOD,KAAKE,QAAL,EAAP;AACD;AACD,SAAOF,IAAP;AACD;;AAED;AACA;AACA;;AAEO,SAASrD,GAAT,GAAyC;AAAA,MAA5BwD,SAA4B,uEAAhB,EAAgB;AAAA,MAAZf,KAAY,uEAAJ,EAAI;;AAC9C;AACAD,aAAWC,KAAX;;AAEA,MAAMgB,YAAY,EAAlB;AACAhB,QAAMiB,KAAN,GAAcC,OAAOC,SAAP,CAAiBnB,MAAMiB,KAAvB,IAAgCjB,MAAMiB,KAAtC,GAA8C,EAAEzC,WAA9D;AACAwB,QAAMoB,cAAN,GAAuB,CAAC,WAAD,CAAvB;;AAEA,WAASC,GAAT,CAAaC,KAAb,EAAoB;AAClBN,cAAUM,KAAV,IAAmB,IAAnB;AACD;;AAED,WAASC,EAAT,CAAYD,KAAZ,EAAmB;AACjB,aAASE,WAAT,GAAuB;AACrBH,UAAIC,KAAJ;AACD;AACD,WAAOrB,OAAOwB,MAAP,CAAc,EAAED,wBAAF,EAAd,CAAP;AACD;;AAEDT,YAAUW,SAAV,GAAsB;AAAA,WAAM,CAAC,CAAC1B,MAAM2B,OAAd;AAAA,GAAtB;;AAEAZ,YAAUa,QAAV,GAAqB,UAACC,UAAD,EAAgB;AACnC,QAAI7B,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;;AAED,QAAIyE,cAAcA,aAAa7B,MAAMiB,KAArC,EAA4C;AAC1C;AACD;;AAEDjB,UAAMiB,KAAN,GAAc,EAAEzC,WAAhB;AACAwC,cAAUnC,OAAV,CAAkB,UAACiD,QAAD;AAAA,aAAcA,YAAYA,SAASf,SAAT,CAA1B;AAAA,KAAlB;AACD,GAZD;;AAcAA,YAAUgB,UAAV,GAAuB,UAACD,QAAD,EAAc;AACnC,QAAI9B,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA,aAAO,IAAP;AACD;;AAED,QAAMkE,QAAQN,UAAUgB,MAAxB;AACAhB,cAAUiB,IAAV,CAAeH,QAAf;AACA,WAAOP,GAAGD,KAAH,CAAP;AACD,GATD;;AAWAP,YAAUmB,QAAV,GAAqB;AAAA,WAAMlC,MAAMiB,KAAZ;AAAA,GAArB;;AAEAF,YAAUF,GAAV,GAAgB,UAACsB,SAAD,EAAe;AAC7B,QAAIC,QAAQpC,MAAMoB,cAAN,CAAqBY,MAAjC;AACA;AACA;AACA,WAAOI,OAAP,EAAgB;AACd,UAAIpC,MAAMoB,cAAN,CAAqBgB,KAArB,MAAgCD,SAApC,EAA+C;AAC7C,eAAO,IAAP;AACD;AACF;AACD,WAAO,KAAP;AACD,GAVD;;AAYApB,YAAUsB,YAAV,GAAyB;AAAA,QAACC,KAAD,uEAAS,CAAT;AAAA,WACvBtC,MAAMoB,cAAN,CAAqBpB,MAAMoB,cAAN,CAAqBY,MAArB,GAA8B,CAA9B,GAAkCM,KAAvD,CADuB;AAAA,GAAzB;;AAGAvB,YAAUtD,GAAV,GAAgB,YAAqD;AAAA,QAApD8E,GAAoD,uEAA9C,EAA8C;AAAA,QAA1CC,SAA0C,uEAA9B,KAA8B;AAAA,QAAvBC,UAAuB,uEAAV,KAAU;;AACnE,QAAIC,MAAM,KAAV;AACAzC,WAAOC,IAAP,CAAYqC,GAAZ,EAAiB1D,OAAjB,CAAyB,UAACY,IAAD,EAAU;AACjC,UAAMC,KAAK+C,aAAa,IAAb,GAAoB1B,kBAAgBzD,WAAWmC,IAAX,CAAhB,CAA/B;AACA,UAAIC,MAAMU,MAAMC,OAAN,CAAckC,IAAI9C,IAAJ,CAAd,CAAV,EAAoC;AAClCiD,cAAMhD,uCAAM6C,IAAI9C,IAAJ,CAAN,MAAoBiD,GAA1B;AACD,OAFD,MAEO,IAAIhD,EAAJ,EAAQ;AACbgD,cAAMhD,GAAG6C,IAAI9C,IAAJ,CAAH,KAAiBiD,GAAvB;AACD,OAFM,MAEA;AACL;AACA,YAAI,CAAC,OAAD,EAAUC,OAAV,CAAkBlD,IAAlB,MAA4B,CAAC,CAA7B,IAAkC,CAAC+C,SAAvC,EAAkD;AAChDnF,oEAC0CoC,IAD1C,UACmD8C,IAAI9C,IAAJ,CADnD;AAGD;AACDO,cAAMP,IAAN,IAAc8C,IAAI9C,IAAJ,CAAd;AACAiD,cAAM,IAAN;AACD;AACF,KAhBD;AAiBA,WAAOA,GAAP;AACD,GApBD;;AAsBA3B,YAAUvD,GAAV,GAAgB,YAAa;AAAA,sCAAToF,IAAS;AAATA,UAAS;AAAA;;AAC3B,QAAI,CAACA,KAAKZ,MAAV,EAAkB;AAChB,aAAOhC,KAAP;AACD;AACD,QAAM6C,SAAS,EAAf;AACAD,SAAK/D,OAAL,CAAa,UAACY,IAAD,EAAU;AACrBoD,aAAOpD,IAAP,IAAeO,MAAMP,IAAN,CAAf;AACD,KAFD;AAGA,WAAOoD,MAAP;AACD,GATD;;AAWA9B,YAAU+B,kBAAV,GAA+B,UAACC,GAAD;AAAA,WAAS/C,MAAM+C,GAAN,CAAT;AAAA,GAA/B;;AAEAhC,YAAUiC,MAAV,GAAmB,YAAM;AACvB/C,WAAOC,IAAP,CAAYF,KAAZ,EAAmBnB,OAAnB,CAA2B,UAACoE,KAAD;AAAA,aAAW,OAAOjD,MAAMiD,KAAN,CAAlB;AAAA,KAA3B;AACAjC,cAAUnC,OAAV,CAAkB,UAACqE,EAAD,EAAK5B,KAAL;AAAA,aAAeD,IAAIC,KAAJ,CAAf;AAAA,KAAlB;;AAEA;AACAtB,UAAM2B,OAAN,GAAgB,IAAhB;AACD,GAND;;AAQA;AACAZ,YAAUD,QAAV,GAAqB,YAAM;AACzB,QAAMqC,cAAclD,OAAOmD,MAAP,CAAc,EAAd,EAAkBpD,KAAlB,EAAyB;AAC3CqD,gBAAUtC,UAAUsB,YAAV;AADiC,KAAzB,CAApB;;AAIA;AACApC,WAAOC,IAAP,CAAYiD,WAAZ,EAAyBtE,OAAzB,CAAiC,UAACyE,OAAD,EAAa;AAC5C,UAAIH,YAAYG,OAAZ,MAAyB,IAAzB,IAAiCH,YAAYG,OAAZ,MAAyBC,SAA9D,EAAyE;AACvE,eAAOJ,YAAYG,OAAZ,CAAP;AACD,OAFD,MAEO,IAAIH,YAAYG,OAAZ,EAAqBzC,GAAzB,EAA8B;AACnCsC,oBAAYG,OAAZ,IAAuBH,YAAYG,OAAZ,EAAqBxC,QAArB,EAAvB;AACD,OAFM,MAEA,IAAIV,MAAMC,OAAN,CAAc8C,YAAYG,OAAZ,CAAd,CAAJ,EAAyC;AAC9CH,oBAAYG,OAAZ,IAAuBH,YAAYG,OAAZ,EAAqBf,GAArB,CAAyB5B,oBAAzB,CAAvB;AACD;AACF,KARD;;AAUA;AACA,QAAM6C,YAAY,EAAlB;AACAvD,WAAOC,IAAP,CAAYiD,WAAZ,EACGM,IADH,GAEG5E,OAFH,CAEW,UAACY,IAAD,EAAU;AACjB+D,gBAAU/D,IAAV,IAAkB0D,YAAY1D,IAAZ,CAAlB;AACD,KAJH;;AAMA;AACA,QAAI+D,UAAUvC,KAAd,EAAqB;AACnB,aAAOuC,UAAUvC,KAAjB;AACD;;AAED,WAAOuC,SAAP;AACD,GA9BD;;AAgCA;AACAzC,YAAU2C,WAAV,GAAwB,UAACC,KAAD,EAA0B;AAAA,QAAlBvE,KAAkB,uEAAV,KAAU;;AAChD,QAAIuE,MAAMtB,YAAN,OAAyBtB,UAAUsB,YAAV,EAA7B,EAAuD;AACrD,YAAM,IAAIuB,KAAJ,yBACkBD,MAAMtB,YAAN,EADlB,cAC+CtB,UAAUsB,YAAV,EAD/C,CAAN;AAGD;AACD,QAAMwB,aAAaF,MAAMnG,GAAN,EAAnB;;AAEA,QAAMsG,UAAU7D,OAAOC,IAAP,CAAYF,KAAZ,EAAmByD,IAAnB,EAAhB;AACA,QAAMM,eAAe9D,OAAOC,IAAP,CAAY2D,UAAZ,EAAwBJ,IAAxB,EAArB;;AAEAM,iBAAalF,OAAb,CAAqB,UAACsB,GAAD,EAAS;AAC5B,UAAM6D,SAASF,QAAQnB,OAAR,CAAgBxC,GAAhB,CAAf;AACA,UAAI6D,WAAW,CAAC,CAAhB,EAAmB;AACjB,YAAI5E,KAAJ,EAAW;AACTjC,iCAAqBgD,GAArB;AACD;AACF,OAJD,MAIO;AACL2D,gBAAQG,MAAR,CAAeD,MAAf,EAAuB,CAAvB;AACD;AACDhE,YAAMG,GAAN,IAAa0D,WAAW1D,GAAX,CAAb;AACD,KAVD;AAWA,QAAI2D,QAAQ9B,MAAR,IAAkB5C,KAAtB,EAA6B;AAC3BjC,yCAAiC2G,QAAQI,IAAR,CAAa,IAAb,CAAjC;AACD;;AAEDnD,cAAUa,QAAV;AACD,GA3BD;AA4BD;;AAED;AACA;AACA;;AAEO,SAASpE,GAAT,CAAauD,SAAb,EAAwBf,KAAxB,EAA+BmE,UAA/B,EAA2C;AAChDA,aAAWtF,OAAX,CAAmB,UAACoE,KAAD,EAAW;AAC5B,QAAI,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QAArB,EAA+B;AAC7BlC,wBAAgBzD,WAAW2F,MAAMxD,IAAjB,CAAhB,IAA4C;AAAA,eAAMO,MAAMiD,MAAMxD,IAAZ,CAAN;AAAA,OAA5C;AACD,KAFD,MAEO;AACLsB,wBAAgBzD,WAAW2F,KAAX,CAAhB,IAAuC;AAAA,eAAMjD,MAAMiD,KAAN,CAAN;AAAA,OAAvC;AACD;AACF,GAND;AAOD;;AAED;AACA;AACA;;AAEA,IAAMmB,kBAAkB;AACtBC,MADsB,iBACjBtD,SADiB,EACNf,KADM,EACCiD,KADD,EACQ;AAC5B,WAAO,UAACxC,KAAD,EAAW;AAChB,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,YAAIwC,MAAMoB,IAAN,CAAW5D,KAAX,MAAsB8C,SAA1B,EAAqC;AACnC,cAAIvD,MAAMiD,MAAMxD,IAAZ,MAAsBwD,MAAMoB,IAAN,CAAW5D,KAAX,CAA1B,EAA6C;AAC3CT,kBAAMiD,MAAMxD,IAAZ,IAAoBwD,MAAMoB,IAAN,CAAW5D,KAAX,CAApB;AACAM,sBAAUa,QAAV;AACA,mBAAO,IAAP;AACD;AACD,iBAAO,KAAP;AACD;AACDxE,0DAAgD6F,KAAhD,UAA0DxC,KAA1D;AACA,cAAM,IAAI6D,UAAJ,CAAe,uCAAf,CAAN;AACD;AACD,UAAI,OAAO7D,KAAP,KAAiB,QAArB,EAA+B;AAC7B,YAAIT,MAAMiD,MAAMxD,IAAZ,MAAsBgB,KAA1B,EAAiC;AAC/B,cACER,OAAOC,IAAP,CAAY+C,MAAMoB,IAAlB,EACG9B,GADH,CACO,UAACpC,GAAD;AAAA,mBAAS8C,MAAMoB,IAAN,CAAWlE,GAAX,CAAT;AAAA,WADP,EAEGwC,OAFH,CAEWlC,KAFX,MAEsB,CAAC,CAHzB,EAIE;AACAT,kBAAMiD,MAAMxD,IAAZ,IAAoBgB,KAApB;AACAM,sBAAUa,QAAV;AACA,mBAAO,IAAP;AACD;AACDxE,4DAAgD6F,KAAhD,UAA0DxC,KAA1D;AACA,gBAAM,IAAI6D,UAAJ,CAAe,gCAAf,CAAN;AACD;AACD,eAAO,KAAP;AACD;AACDlH,wEACoD6F,KADpD,UAC8DxC,KAD9D;AAGA,YAAM,IAAI8D,SAAJ,CAAc,gDAAd,CAAN;AACD,KAjCD;AAkCD;AApCqB,CAAxB;;AAuCA,SAASC,UAAT,CAAoBvB,KAApB,EAA2B;AACzB,MAAI,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QAArB,EAA+B;AAC7B,QAAMvD,KAAK0E,gBAAgBnB,MAAMwB,IAAtB,CAAX;AACA,QAAI/E,EAAJ,EAAQ;AACN,aAAO,UAACqB,SAAD,EAAYf,KAAZ;AAAA,eAAsBN,GAAGqB,SAAH,EAAcf,KAAd,EAAqBiD,KAArB,CAAtB;AAAA,OAAP;AACD;;AAED7F,2CAAqC6F,KAArC;AACA,UAAM,IAAIsB,SAAJ,CAAc,qBAAd,CAAN;AACD;AACD,SAAO,SAASG,SAAT,CAAmB3D,SAAnB,EAA8Bf,KAA9B,EAAqC;AAC1C,WAAO,SAAS2E,MAAT,CAAgBlE,KAAhB,EAAuB;AAC5B,UAAIT,MAAM2B,OAAV,EAAmB;AACjBvE,sBAAc,2CAAd;AACA,eAAO,KAAP;AACD;;AAED,UAAI4C,MAAMiD,KAAN,MAAiBxC,KAArB,EAA4B;AAC1BT,cAAMiD,KAAN,IAAexC,KAAf;AACAM,kBAAUa,QAAV;AACA,eAAO,IAAP;AACD;AACD,aAAO,KAAP;AACD,KAZD;AAaD,GAdD;AAeD;;AAEM,SAASnE,GAAT,CAAasD,SAAb,EAAwBf,KAAxB,EAA+B4E,MAA/B,EAAuC;AAC5CA,SAAO/F,OAAP,CAAe,UAACoE,KAAD,EAAW;AACxB,QAAI,QAAOA,KAAP,yCAAOA,KAAP,OAAiB,QAArB,EAA+B;AAC7BlC,wBAAgBzD,WAAW2F,MAAMxD,IAAjB,CAAhB,IAA4C+E,WAAWvB,KAAX,EAC1ClC,SAD0C,EAE1Cf,KAF0C,CAA5C;AAID,KALD,MAKO;AACLe,wBAAgBzD,WAAW2F,KAAX,CAAhB,IAAuCuB,WAAWvB,KAAX,EACrClC,SADqC,EAErCf,KAFqC,CAAvC;AAID;AACF,GAZD;AAaD;;AAED;AACA;AACA;;AAEO,SAAStC,MAAT,CAAgBqD,SAAhB,EAA2Bf,KAA3B,EAAkCmE,UAAlC,EAA8C;AACnD3G,MAAIuD,SAAJ,EAAef,KAAf,EAAsBmE,UAAtB;AACA1G,MAAIsD,SAAJ,EAAef,KAAf,EAAsBmE,UAAtB;AACD;;AAED;AACA;AACA;AACA;;AAEO,SAASxG,QAAT,CAAkBoD,SAAlB,EAA6Bf,KAA7B,EAAoCmE,UAApC,EAAgD;AACrDA,aAAWtF,OAAX,CAAmB,UAACoE,KAAD,EAAW;AAC5BlC,sBAAgBzD,WAAW2F,KAAX,CAAhB,IAAuC;AAAA,aAAM,GAAG3C,MAAH,CAAUN,MAAMiD,KAAN,CAAV,CAAN;AAAA,KAAvC;AACAlC,sBAAgBzD,WAAW2F,KAAX,CAAhB,oBAAkD;AAAA,aAAMjD,MAAMiD,KAAN,CAAN;AAAA,KAAlD;AACD,GAHD;AAID;;AAED;AACA;AACA;AACA;AACA;;AAEO,SAASrF,QAAT,CACLmD,SADK,EAELf,KAFK,EAGLmE,UAHK,EAILU,IAJK,EAML;AAAA,MADAC,UACA,uEADavB,SACb;;AACAY,aAAWtF,OAAX,CAAmB,UAACoE,KAAD,EAAW;AAC5BlC,sBAAgBzD,WAAW2F,KAAX,CAAhB,IAAuC,YAAa;AAAA,yCAAT8B,IAAS;AAATA,YAAS;AAAA;;AAClD,UAAI/E,MAAM2B,OAAV,EAAmB;AACjBvE,sBAAc,2CAAd;AACA,eAAO,KAAP;AACD;;AAED,UAAI4H,QAAQD,IAAZ;AACA;AACA,UAAIC,MAAMhD,MAAN,KAAiB,CAAjB,IAAsB5B,MAAMC,OAAN,CAAc2E,MAAM,CAAN,CAAd,CAA1B,EAAmD;AACjD;AACAA,gBAAQA,MAAM,CAAN,CAAR;AACA;AACD;;AAED,UAAIA,MAAMhD,MAAN,KAAiB6C,IAArB,EAA2B;AACzB,YAAIG,MAAMhD,MAAN,GAAe6C,IAAf,IAAuBC,eAAevB,SAA1C,EAAqD;AACnDyB,kBAAQ,GAAG1E,MAAH,CAAU0E,KAAV,CAAR;AACA,iBAAOA,MAAMhD,MAAN,GAAe6C,IAAtB;AAA4BG,kBAAM/C,IAAN,CAAW6C,UAAX;AAA5B;AACD,SAHD,MAGO;AACL,gBAAM,IAAIR,UAAJ,CAAe,2CAAf,CAAN;AACD;AACF;AACD,UAAIW,iBAAiB,KAArB;AACAjF,YAAMiD,KAAN,EAAapE,OAAb,CAAqB,UAAC+B,IAAD,EAAOU,KAAP,EAAiB;AACpC,YAAIV,SAASoE,MAAM1D,KAAN,CAAb,EAA2B;AACzB,cAAI2D,cAAJ,EAAoB;AAClB;AACD;AACDA,2BAAiB,IAAjB;AACD;AACF,OAPD;;AASA,UAAIA,kBAAkBjF,MAAMiD,KAAN,EAAajB,MAAb,KAAwBgD,MAAMhD,MAApD,EAA4D;AAC1DhC,cAAMiD,KAAN,IAAe,GAAG3C,MAAH,CAAU0E,KAAV,CAAf;AACAjE,kBAAUa,QAAV;AACD;AACD,aAAO,IAAP;AACD,KArCD;;AAuCAb,sBAAgBzD,WAAW2F,KAAX,CAAhB,aAA2C,UAACiC,UAAD,EAAgB;AACzD,UAAMC,SAASnF,MAAMiD,KAAN,CAAf;AACAiC,iBAAWrG,OAAX,CAAmB,UAACuG,CAAD,EAAIC,CAAJ,EAAU;AAC3BF,eAAOE,CAAP,IAAYD,CAAZ;AACD,OAFD;AAGD,KALD;AAMD,GA9CD;AA+CD;;AAED;AACA;AACA;;AAEO,SAASvH,WAAT,CACLkD,SADK,EAELf,KAFK,EAGLmE,UAHK,EAILU,IAJK,EAML;AAAA,MADAC,UACA,uEADavB,SACb;;AACA5F,WAASoD,SAAT,EAAoBf,KAApB,EAA2BmE,UAA3B;AACAvG,WAASmD,SAAT,EAAoBf,KAApB,EAA2BmE,UAA3B,EAAuCU,IAAvC,EAA6CC,UAA7C;AACD;;AAED;AACA;AACA;;AAEO,SAAShH,IAAT,CAAciD,SAAd,EAAyBf,KAAzB,EAAgCsF,cAAhC,EAAgDC,eAAhD,EAAiE;AACtE,MAAIvF,MAAMwF,SAAV,EAAqB;AACnBxF,UAAMwF,SAAN,GAAkBxF,MAAMwF,SAAN,CAAgBjD,GAAhB,CAAoBkD,aAApB,CAAlB;AACD,GAFD,MAEO;AACLzF,UAAMwF,SAAN,GAAkB,EAAlB;AACD;;AAED,MAAIxF,MAAM0F,eAAV,EAA2B;AACzB1F,UAAM0F,eAAN,GAAwB1F,MAAM0F,eAAN,CAAsBnD,GAAtB,CAA0BkD,aAA1B,CAAxB;AACD,GAFD,MAEO;AACLzF,UAAM0F,eAAN,GAAwB,EAAxB;AACD;;AAED,MAAI1F,MAAM2F,MAAV,EAAkB;AAChB3F,UAAM2F,MAAN,GAAe3F,MAAM2F,MAAN,CAAapD,GAAb,CAAiBkD,aAAjB,CAAf;AACD,GAFD,MAEO;AACLzF,UAAM2F,MAAN,GAAe,EAAf;AACD;;AAED,MAAI3F,MAAM4F,mBAAV,EAA+B;AAC7B5F,UAAM4F,mBAAN,GAA4B5F,MAAM4F,mBAAN,CAA0BrD,GAA1B,CAA8BkD,aAA9B,CAA5B;AACD,GAFD,MAEO;AACLzF,UAAM4F,mBAAN,GAA4B,EAA5B;AACD;;AAED;AACA5F,QAAMsF,cAAN,GAAuBA,cAAvB;;AAEA;AACA,WAASO,YAAT,CAAsBC,OAAtB,EAAyC;AAAA,QAAVC,IAAU,uEAAH,CAAG;;AACvC,QAAI/F,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;AACD,QAAI2I,QAAQ/F,MAAMsF,cAAlB,EAAkC;AAChC,UAAIU,qBAAmBjF,UAAUsB,YAAV,EAAnB,eAAJ;AACA2D,kBAAUhG,MAAMsF,cAAhB;AACAU,aAAO,2DAAP;AACA5I,oBAAc4I,GAAd;AACA;AACD;AACD,QAAIhG,MAAMwF,SAAN,CAAgBO,IAAhB,MAA0BD,OAA1B,IAAqC9F,MAAM0F,eAAN,CAAsBK,IAAtB,CAAzC,EAAsE;AACpE/F,YAAMwF,SAAN,CAAgBO,IAAhB,IAAwBD,OAAxB;AACA9F,YAAM0F,eAAN,CAAsBK,IAAtB,IAA8B,IAA9B;AACA,UAAIhF,UAAUa,QAAd,EAAwB;AACtBb,kBAAUa,QAAV;AACD;AACF;AACF;;AAED,WAASqE,YAAT,GAAgC;AAAA,QAAVF,IAAU,uEAAH,CAAG;;AAC9B,QAAI/F,MAAM0F,eAAN,CAAsBK,IAAtB,CAAJ,EAAiC;AAC/B/F,YAAMwF,SAAN,CAAgBO,IAAhB,IAAwB/F,MAAM0F,eAAN,CAAsBK,IAAtB,GAAxB;AACD;AACD,WAAO/F,MAAMwF,SAAN,CAAgBO,IAAhB,CAAP;AACD;;AAED,WAASG,kBAAT,CAA4BC,UAA5B,EAAkD;AAAA,QAAVJ,IAAU,uEAAH,CAAG;;AAChD,QAAI/F,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;AACD,QAAI2I,QAAQ/F,MAAMsF,cAAlB,EAAkC;AAChC,UAAIU,qBAAmBjF,UAAUsB,YAAV,EAAnB,eAAJ;AACA2D,kBAAUhG,MAAMsF,cAAhB;AACAU,aAAO,iEAAP;AACA5I,oBAAc4I,GAAd;AACA;AACD;AACDhG,UAAMwF,SAAN,CAAgBO,IAAhB,IAAwB,IAAxB;AACA/F,UAAM0F,eAAN,CAAsBK,IAAtB,IAA8BI,UAA9B;AACD;;AAED,WAASC,kBAAT,GAAsC;AAAA,QAAVL,IAAU,uEAAH,CAAG;;AACpC,WAAO/F,MAAM0F,eAAN,CAAsBK,IAAtB,CAAP;AACD;;AAED,WAASM,kBAAT,CAA4BF,UAA5B,EAAwC;AACtC,QAAInG,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;AACD4C,UAAMsF,cAAN;AACAY,uBAAmBC,UAAnB,EAA+BnG,MAAMsF,cAAN,GAAuB,CAAtD;AACD;;AAED,WAASgB,YAAT,CAAsBR,OAAtB,EAA+B;AAC7B,QAAI9F,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;AACD4C,UAAMsF,cAAN;AACAO,iBAAaC,OAAb,EAAsB9F,MAAMsF,cAAN,GAAuB,CAA7C;AACD;;AAED,WAASiB,aAAT,GAAiC;AAAA,QAAVR,IAAU,uEAAH,CAAG;;AAC/B,QAAI/F,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA,aAAO,IAAP;AACD;AACD,QAAI2D,UAAUyF,YAAV,EAAJ,EAA8B;AAC5B;AACAzF,gBAAU0F,MAAV;AACD;AACD,WAAOzG,MAAM2F,MAAN,CAAaI,IAAb,CAAP;AACD;;AAEDhF,YAAUyF,YAAV,GAAyB,YAAM;AAC7B,QAAME,aAAa1G,MAAMiB,KAAzB;AACA,QAAImB,QAAQmD,eAAZ;AACA,QAAIoB,iBAAiBC,QAArB;AACA,WAAOxE,OAAP,EAAgB;AACd,UAAI,CAACpC,MAAM2F,MAAN,CAAavD,KAAb,CAAL,EAA0B;AACxB,eAAO,IAAP;AACD;AACD,UAAMyE,KAAK7G,MAAM2F,MAAN,CAAavD,KAAb,EAAoBF,QAApB,EAAX;AACA,UAAI2E,KAAKH,UAAT,EAAqB;AACnB,eAAO,IAAP;AACD;AACD,UAAIG,KAAKF,cAAT,EAAyB;AACvBA,yBAAiBE,EAAjB;AACD;AACF;;AAEDzE,YAAQpC,MAAMsF,cAAd;AACA,WAAOlD,OAAP,EAAgB;AACd,UACEpC,MAAM0F,eAAN,CAAsBtD,KAAtB,KACApC,MAAM0F,eAAN,CAAsBtD,KAAtB,EAA6B0E,MAA7B,CAAoCN,YAApC,EAFF,EAGE;AACA,eAAO,IAAP;AACD;AACF;;AAEDpE,YAAQpC,MAAMsF,cAAd;AACA,WAAOlD,OAAP,EAAgB;AACd,UACErB,UAAUkF,YAAV,CAAuB7D,KAAvB,KACArB,UAAUkF,YAAV,CAAuB7D,KAAvB,EAA8BF,QAA9B,KAA2CyE,cAF7C,EAGE;AACA,eAAO,IAAP;AACD;AACF;AACD,WAAO,KAAP;AACD,GArCD;;AAuCA,WAASI,aAAT,GAAiC;AAAA,QAAVhB,IAAU,uEAAH,CAAG;;AAC/B,QAAMiB,mBAAmB,SAAnBA,gBAAmB;AAAA,aAAMT,cAAcR,IAAd,CAAN;AAAA,KAAzB;AACA;AACAiB,qBAAiBF,MAAjB,GAA0B/F,SAA1B;AACA,WAAOiG,gBAAP;AACD;;AAED;AACA,MAAIhH,MAAMsF,cAAV,EAA0B;AACxB;AACA,QAAIlD,QAAQpC,MAAMsF,cAAlB;AACA,WAAOlD,OAAP,EAAgB;AACdpC,YAAMwF,SAAN,CAAgBvD,IAAhB,CAAqB,IAArB;AACAjC,YAAM0F,eAAN,CAAsBzD,IAAtB,CAA2B,IAA3B;AACD;;AAED;AACAlB,cAAU8E,YAAV,GAAyBA,YAAzB;AACA9E,cAAUmF,kBAAV,GAA+BA,kBAA/B;AACAnF,cAAUuF,YAAV,GAAyBA,YAAzB;AACAvF,cAAUsF,kBAAV,GAA+BA,kBAA/B;AACAtF,cAAUkF,YAAV,GAAyBA,YAAzB;AACAlF,cAAUqF,kBAAV,GAA+BA,kBAA/B;AACD;;AAED,MAAIb,eAAJ,EAAqB;AACnBxE,cAAUwF,aAAV,GAA0BA,aAA1B;AACAxF,cAAUgG,aAAV,GAA0BA,aAA1B;AACD;;AAEDhG,YAAU0F,MAAV,GAAmB,YAAM;AACvB,QAAMQ,MAAM,EAAZ;AACA,QAAIjH,MAAMsF,cAAV,EAA0B;AACxB,UAAIlD,SAAQ,CAAZ;AACA,aAAOA,SAAQpC,MAAMsF,cAArB,EAAqC;AACnC2B,YAAI7E,MAAJ,IAAarB,UAAUkF,YAAV,CAAuB7D,MAAvB,CAAb;AACAA;AACD;AACF;AACD,QAAIrB,UAAUyF,YAAV,EAAJ,EAA8B;AAC5BzF,gBAAUmG,WAAV,CAAsBD,GAAtB,EAA2BjH,MAAM2F,MAAjC;AACD;AACF,GAZD;;AAcA5E,YAAUoG,qBAAV,GAAkC;AAAA,WAAMnH,MAAMsF,cAAZ;AAAA,GAAlC;AACAvE,YAAUqG,sBAAV,GAAmC;AAAA,WAAM7B,eAAN;AAAA,GAAnC;;AAEAxE,YAAUsG,sBAAV,GAAmC,UAACC,SAAD,EAAe;AAChD,QAAMC,YAAYvH,MAAM4F,mBAAN,CAA0B0B,SAA1B,CAAlB;AACA,QAAME,KAAKxH,MAAMwF,SAAN,CAAgB8B,SAAhB,CAAX;AACA,QAAIC,aAAaC,EAAjB,EAAqB;AACnB,aAAOA,WAASD,UAAUE,gBAAnB,IAAyC9J,QAAzC,CACL4J,UAAUG,SADL,CAAP;AAGD;AACD,WAAO,IAAP;AACD,GATD;AAUA3G,YAAU4G,sBAAV,GAAmC,UACjCL,SADiC,EAEjCI,SAFiC,EAGjCD,gBAHiC,EAK9B;AAAA,QADHG,aACG,uEADa,SACb;;AACH,WAAO5H,MAAM4F,mBAAN,CAA0B5D,MAA1B,GAAmCsF,SAA1C,EAAqD;AACnDtH,YAAM4F,mBAAN,CAA0B3D,IAA1B,CAA+B,IAA/B;AACD;AACDjC,UAAM4F,mBAAN,CAA0B0B,SAA1B,IAAuC;AACrCI,0BADqC;AAErCD,wCAFqC;AAGrCG;AAHqC,KAAvC;AAKD,GAdD;AAeD;;AAED;AACA;AACA;;AAEO,SAAS7J,KAAT,CAAegD,SAAf,EAA0Bf,KAA1B,EAAiC6H,SAAjC,EAA4C;AACjD,MAAM7G,YAAY,EAAlB;AACA,MAAM8G,iBAAiB/G,UAAUiC,MAAjC;;AAEA,WAAS3B,GAAT,CAAaC,KAAb,EAAoB;AAClBN,cAAUM,KAAV,IAAmB,IAAnB;AACD;;AAED,WAASC,EAAT,CAAYD,KAAZ,EAAmB;AACjB,aAASE,WAAT,GAAuB;AACrBH,UAAIC,KAAJ;AACD;AACD,WAAOrB,OAAOwB,MAAP,CAAc,EAAED,wBAAF,EAAd,CAAP;AACD;;AAED,WAASuG,MAAT,GAAkB;AAChB,QAAI/H,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA;AACD;AACD;AACA,SAAK,IAAIkE,QAAQ,CAAjB,EAAoBA,QAAQN,UAAUgB,MAAtC,EAA8C,EAAEV,KAAhD,EAAuD;AACrD,UAAM0G,KAAKhH,UAAUM,KAAV,CAAX;AACA,UAAI0G,EAAJ,EAAQ;AACNA,WAAGC,KAAH,CAASlH,SAAT,EAAoBmH,SAApB;AACD;AACF;AACD;AACD;;AAEDnH,uBAAmBzD,WAAWuK,SAAX,CAAnB,IAA8CE,MAA9C;;AAEAhH,mBAAezD,WAAWuK,SAAX,CAAf,IAA0C,UAAC/F,QAAD,EAAc;AACtD,QAAI9B,MAAM2B,OAAV,EAAmB;AACjBvE,oBAAc,2CAAd;AACA,aAAO,IAAP;AACD;;AAED,QAAMkE,QAAQN,UAAUgB,MAAxB;AACAhB,cAAUiB,IAAV,CAAeH,QAAf;AACA,WAAOP,GAAGD,KAAH,CAAP;AACD,GATD;;AAWAP,YAAUiC,MAAV,GAAmB,YAAM;AACvB8E;AACA9G,cAAUnC,OAAV,CAAkB,UAACqE,EAAD,EAAK5B,KAAL;AAAA,aAAeD,IAAIC,KAAJ,CAAf;AAAA,KAAlB;AACD,GAHD;AAID;;AAED;AACA;AACA;;AAEO,SAAStD,WAAT,CAAqBmK,MAArB,EAA6BhG,SAA7B,EAAwC;AAC7C,MAAMiG,cAAc,SAAdA,WAAc,GAAwB;AAAA,QAAvBC,aAAuB,uEAAP,EAAO;;AAC1C,QAAMrI,QAAQ,EAAd;AACA,QAAMe,YAAY,EAAlB;AACAoH,WAAOpH,SAAP,EAAkBf,KAAlB,EAAyBqI,aAAzB;AACA,WAAOpI,OAAOwB,MAAP,CAAcV,SAAd,CAAP;AACD,GALD;;AAOA;AACA,MAAIoB,SAAJ,EAAe;AACbsD,kBAAI6C,QAAJ,CAAanG,SAAb,EAAwBiG,WAAxB;AACD;;AAED,SAAOA,WAAP;AACD;;AAED;AACA;AACA;;AAEO,SAASnK,KAAT,GAAsB;AAAA,qCAAJyB,EAAI;AAAJA,MAAI;AAAA;;AAC3B,SAAO;AAAA,uCAAIqF,IAAJ;AAAIA,UAAJ;AAAA;;AAAA,WAAarF,GAAGoH,MAAH,CAAU,UAACzB,CAAD;AAAA,aAAO,CAAC,CAACA,CAAT;AAAA,KAAV,EAAsBxG,OAAtB,CAA8B,UAACwG,CAAD;AAAA,aAAOA,mBAAKN,IAAL,CAAP;AAAA,KAA9B,CAAb;AAAA,GAAP;AACD;;AAED;AACA;AACA;;AAEO,SAAS7G,WAAT,CAAqBqK,QAArB,EAA+B;AACpC,SAAOA,YAAYA,SAAS1H,GAArB,IAA4B0H,SAAS1H,GAAT,CAAa,WAAb,CAAnC;AACD;;AAEM,SAAS1C,oBAAT,CACLoK,QADK,EAELC,eAFK,EAKL;AAAA,MAFAC,WAEA,uEAFc,EAEd;AAAA,MADAC,gBACA,uEADmB,EACnB;;AACA,MAAIxK,YAAYqK,QAAZ,CAAJ,EAA2B;AACzB,QAAIG,iBAAiB/F,OAAjB,CAAyB4F,QAAzB,KAAsC,CAA1C,EAA6C;AAC3C;AACA,aAAOE,WAAP;AACD;;AAEDC,qBAAiBzG,IAAjB,CAAsBsG,QAAtB;AACA,QAAMI,SAASH,gBAAgBD,QAAhB,CAAf;AACA,QAAII,WAAWpF,SAAf,EAA0B;AACxBkF,kBAAYxG,IAAZ,CAAiB0G,MAAjB;AACD;;AAED;AACA,QAAM3I,QAAQuI,SAAS/K,GAAT,EAAd;AACAyC,WAAOC,IAAP,CAAYF,KAAZ,EAAmBnB,OAAnB,CAA2B,UAACsB,GAAD,EAAS;AAClC,UAAMyI,WAAW5I,MAAMG,GAAN,CAAjB;AACA,UAAIC,MAAMC,OAAN,CAAcuI,QAAd,CAAJ,EAA6B;AAC3BA,iBAAS/J,OAAT,CAAiB,UAACgK,MAAD,EAAY;AAC3B1K,+BACE0K,MADF,EAEEL,eAFF,EAGEC,WAHF,EAIEC,gBAJF;AAMD,SAPD;AAQD,OATD,MASO;AACLvK,6BACEyK,QADF,EAEEJ,eAFF,EAGEC,WAHF,EAIEC,gBAJF;AAMD;AACF,KAnBD;AAoBD;;AAED,SAAOD,WAAP;AACD;;AAED;AACA;AACA;AACA;AACA;;AAEO,SAASrK,QAAT,CAAkB0K,IAAlB,EAAwBC,IAAxB,EAA8BC,SAA9B,EAAyC;AAAA;;AAC9C,MAAIC,gBAAJ;AACA,SAAO,YAAa;AAAA,uCAATlE,IAAS;AAATA,UAAS;AAAA;;AAClB,QAAMmE,UAAU,KAAhB;AACA,QAAMC,QAAQ,SAARA,KAAQ,GAAM;AAClBF,gBAAU,IAAV;AACA,UAAI,CAACD,SAAL,EAAgB;AACdF,aAAKb,KAAL,CAAWiB,OAAX,EAAoBnE,IAApB;AACD;AACF,KALD;AAMA,QAAMqE,UAAUJ,aAAa,CAACC,OAA9B;AACAI,iBAAaJ,OAAb;AACAA,cAAUK,WAAWH,KAAX,EAAkBJ,IAAlB,CAAV;AACA,QAAIK,OAAJ,EAAa;AACXN,WAAKb,KAAL,CAAWiB,OAAX,EAAoBnE,IAApB;AACD;AACF,GAdD;AAeD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIwE,cAAc,CAAlB;;AAEO,SAASlL,KAAT,CAAe0C,SAAf,EAA0Bf,KAA1B,EAAiCwJ,WAAjC,EAAkE;AAAA,MAApBC,aAAoB,uEAAJ,EAAI;;AACvE,MAAMC,eAAe3I,UAAUiC,MAA/B;;AAEA;AACAhD,QAAM2J,OAAN,QAAmBJ,aAAnB;AACAxI,YAAU6I,UAAV,GAAuB;AAAA,WAAM5J,MAAM2J,OAAZ;AAAA,GAAvB;;AAEA;AACA,MAAME,gBAAgBJ,cAAclH,GAAd,CAAkB,UAACuH,CAAD;AAAA,WAAOA,EAAErK,IAAT;AAAA,GAAlB,CAAtB;AACAsB,YAAUgJ,mBAAV,GAAgC;AAAA,WAAMF,aAAN;AAAA,GAAhC;;AAEA;AACA,MAAMG,KAAKP,cAAclH,GAAd,CAAkB,UAAC8C,CAAD;AAAA,WAAOpF,OAAOmD,MAAP,CAAc,EAAd,EAAkBiC,CAAlB,CAAP;AAAA,GAAlB,CAAX;AACAtE,YAAUkJ,mBAAV,GAAgC,UAACC,YAAD,EAAeC,MAAf,EAA0B;AACxD,QAAMC,OAAOJ,GAAGtJ,IAAH,CAAQ,UAACoJ,CAAD;AAAA,aAAOA,EAAErK,IAAF,KAAWyK,YAAlB;AAAA,KAAR,CAAb;AACA,QAAIE,IAAJ,EAAU;AACRnK,aAAOmD,MAAP,CAAcgH,IAAd,EAAoBD,MAApB;AACD;AACF,GALD;;AAOA;AACAnK,QAAMqK,eAAN,GAAwB,EAAxB;AACAtJ,YAAUuJ,eAAV,GAA4B,UAACC,EAAD,EAAQ;AAClC,QAAIvK,MAAMqK,eAAN,CAAsBE,EAAtB,CAAJ,EAA+B;AAC7B,aAAOvK,MAAMqK,eAAN,CAAsBE,EAAtB,CAAP;AACD;AACD,QAAI9J,QAAQ,IAAZ;AACA,QAAM+J,QAAQ,EAAd;AACA,QAAIpI,QAAQ,CAAZ;AACA,QAAIqI,mBAAmB,KAAvB;;AAEA,aAAShE,MAAT,CAAgBiE,MAAhB,EAAwB;AACtB,UAAID,gBAAJ,EAAsB;AACpB;AACD;;AAED,UAAME,aAAa,EAAnB;AACA,UAAIC,aAAa,IAAjB;AACAxI,cAAQoI,MAAMxI,MAAd;AACA,aAAOI,OAAP,EAAgB;AACd,YAAMyI,OAAOL,MAAMpI,KAAN,CAAb;AACA,YAAIyI,KAAKtC,QAAL,KAAkBmC,MAAtB,EAA8B;AAC5BE,uBAAaC,IAAb;AACD,SAFD,MAEO;AACLF,qBAAW1I,IAAX,CAAgB4I,IAAhB;AACD;AACF;;AAED,UAAMC,WAAWF,WAAWrC,QAAX,SACTjL,WAAWsN,WAAWV,YAAtB,CADS,GAAjB;AAGA,UAAIY,aAAarK,KAAjB,EAAwB;AACtBA,gBAAQqK,QAAR;AACAL,2BAAmB,IAAnB;AACA,eAAOE,WAAW3I,MAAlB,EAA0B;AACxB,cAAM+I,eAAeJ,WAAWK,GAAX,EAArB;AACAD,uBAAaxC,QAAb,CAAsB9K,GAAtB,qBAA6BsN,aAAab,YAA1C,EAAyDzJ,KAAzD;AACD;AACDgK,2BAAmB,KAAnB;AACD;AACF;;AAED,aAASQ,IAAT,CAAc1C,QAAd,EAAwB2B,YAAxB,EAAsC;AACpC,UAAMgB,eAAe3C,SAASxG,UAAT,CAAoB0E,MAApB,CAArB;AACA+D,YAAMvI,IAAN,CAAW,EAAEsG,kBAAF,EAAY2B,0BAAZ,EAA0BgB,0BAA1B,EAAX;AACD;;AAED,aAASC,MAAT,CAAgB5C,QAAhB,EAA0B2B,YAA1B,EAAwC;AACtC,UAAMkB,gBAAgB,EAAtB;AACAhJ,cAAQoI,MAAMxI,MAAd;AACA,aAAOI,OAAP,EAAgB;AACd,YAAMyI,OAAOL,MAAMpI,KAAN,CAAb;AACA,YAAIyI,KAAKtC,QAAL,KAAkBA,QAAlB,IAA8BsC,KAAKX,YAAL,KAAsBA,YAAxD,EAAsE;AACpEW,eAAKK,YAAL,CAAkB1J,WAAlB;AACA4J,wBAAcnJ,IAAd,CAAmBG,KAAnB;AACD;AACF;AACD,aAAOgJ,cAAcpJ,MAArB,EAA6B;AAC3BwI,cAAMvG,MAAN,CAAamH,cAAcJ,GAAd,EAAb,EAAkC,CAAlC;AACD;AACF;;AAED,aAASxJ,WAAT,GAAuB;AACrB,aAAOgJ,MAAMxI,MAAb,EAAqB;AACnBwI,cAAMQ,GAAN,GAAYE,YAAZ,CAAyB1J,WAAzB;AACD;AACF;;AAED,QAAM6J,cAAc,EAAEJ,UAAF,EAAQE,cAAR,EAAgB3J,wBAAhB,EAApB;AACAxB,UAAMqK,eAAN,CAAsBE,EAAtB,IAA4Bc,WAA5B;AACA,WAAOA,WAAP;AACD,GArED;;AAuEA;AACA,WAASC,aAAT,GAAyB;AACvB,QAAMC,SAAS,EAAf;AACA,QAAMhB,KAAKvK,MAAM2J,OAAjB;AACA,SAAK,IAAItE,IAAI,CAAb,EAAgBA,IAAIwE,cAAc7H,MAAlC,EAA0CqD,GAA1C,EAA+C;AAC7C,UAAM5F,OAAOoK,cAAcxE,CAAd,CAAb;AACA,UAAM5E,QAAQM,kBAAgBzD,WAAWmC,IAAX,CAAhB,GAAd;AACA8L,aAAOtJ,IAAP,CAAY,EAAEsI,MAAF,EAAM9K,UAAN,EAAYgB,YAAZ,EAAZ;AACD;AACD,WAAO8K,MAAP;AACD;;AAED;AACAxK,YAAUyK,eAAV,GAA4B;AAAA,WAAO;AACjCjB,UAAIvK,MAAM2J,OADuB;AAEjClK,YAAM+J,WAF2B;AAGjCQ,YAHiC;AAIjCyB,kBAAYH;AAJqB,KAAP;AAAA,GAA5B;;AAOA;AACAvK,YAAUiC,MAAV,GAAmB,YAAM;AACvB,QAAMJ,OAAO3C,OAAOC,IAAP,CAAYF,MAAMqK,eAAlB,CAAb;AACA,QAAIjI,QAAQQ,KAAKZ,MAAjB;AACA,WAAOI,OAAP,EAAgB;AACdpC,YAAMqK,eAAN,CAAsBzH,KAAKR,KAAL,CAAtB,EAAmCZ,WAAnC;AACD;AACDkI;AACD,GAPD;AAQD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASpL,oBAAT,CAA8ByC,SAA9B,EAAyCf,KAAzC,EAAgDuC,GAAhD,EAAqD;AAC1D,MAAMmH,eAAe3I,UAAUiC,MAA/B;AACA,MAAM0I,gBAAgB,EAAtB;;AAEA,MAAM7B,gBAAgB5J,OAAOC,IAAP,CAAYqC,GAAZ,CAAtB;AACA,MAAIH,QAAQyH,cAAc7H,MAA1B;AACA,SAAOI,OAAP,EAAgB;AACd,QAAM8H,eAAeL,cAAczH,KAAd,CAArB;AADc,4BAEiBG,IAAI2H,YAAJ,CAFjB;AAAA,QAENyB,QAFM,qBAENA,QAFM;AAAA,QAEIC,QAFJ,qBAEIA,QAFJ;;AAGd,QAAMC,YAAYvO,WAAWsO,QAAX,CAAlB;AACA,QAAME,YAAYxO,WAAW4M,YAAX,CAAlB;AACAnJ,sBAAgB+K,SAAhB,IAA+B9L,MAAM2L,QAAN,UAAsBE,SAAtB,CAA/B;AACA9K,sBAAgB+K,SAAhB,IAA+B9L,MAAM2L,QAAN,UAAsBE,SAAtB,CAA/B;AACAH,kBAAczJ,IAAd,CAAmBjC,MAAM2L,QAAN,EAAgB5J,UAAhB,CAA2BhB,UAAUa,QAArC,CAAnB;AACD;;AAEDb,YAAUiC,MAAV,GAAmB,YAAM;AACvB,WAAO0I,cAAc1J,MAArB,EAA6B;AAC3B0J,oBAAcV,GAAd,GAAoBxJ,WAApB;AACD;AACDkI;AACD,GALD;AAMD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASnL,kBAAT,CACLwC,SADK,EAELf,KAFK,EAKL;AAAA,MAFA+L,KAEA,uEAFQ,EAER;AAAA,MADAC,QACA,uEADW,EACX;;AACAhM,QAAMiM,IAAN,GAAalL,SAAb;;AAEA,WAASmL,UAAT,CAAoB3J,GAApB,EAAyB;AACvB,QAAM4J,YAAYlM,OAAOC,IAAP,CAAYqC,GAAZ,CAAlB;AACA,QAAIH,QAAQ+J,UAAUnK,MAAtB;AACA,WAAOI,OAAP,EAAgB;AACd,UAAMuJ,WAAWQ,UAAU/J,KAAV,CAAjB;AACApC,YAAM2L,QAAN,EAAgBlO,GAAhB,CAAoB8E,IAAIoJ,QAAJ,CAApB;AACD;AACF;;AAED,MAAMQ,YAAYlM,OAAOC,IAAP,CAAY8L,QAAZ,CAAlB;AACA,MAAI5J,QAAQ+J,UAAUnK,MAAtB;;AAbA;AAeE;AACA,QAAM7B,MAAMgM,UAAU/J,KAAV,CAAZ;AACApC,UAAMG,GAAN,IAAa6L,SAAS7L,GAAT,CAAb;;AAEA;AACA,QAAMiM,UAAUL,MAAM5L,GAAN,CAAhB;AACAY,sBAAgBzD,WAAW6C,GAAX,CAAhB,IAAqC,UAACM,KAAD,EAAW;AAC9C,UAAIA,UAAUT,MAAMG,GAAN,CAAd,EAA0B;AACxBH,cAAMG,GAAN,IAAaM,KAAb;AACA,YAAM4L,aAAaD,QAAQ3L,KAAR,CAAnB;AACAyL,mBAAWG,UAAX;AACAtL,kBAAUa,QAAV;AACD;AACF,KAPD;AArBF;;AAcA,SAAOQ,OAAP,EAAgB;AAAA;AAef;;AAED;AACA,MAAI+J,UAAUnK,MAAd,EAAsB;AACpBxE,QAAIuD,SAAJ,EAAef,KAAf,EAAsBmM,SAAtB;AACD;AACF;;AAED;AACA;AACA;;kBAEe;AACbrO,YADa;AAEbR,wBAFa;AAGbW,cAHa;AAIbsC,4BAJa;AAKbxC,cALa;AAMbP,UANa;AAObG,oBAPa;AAQbc,8CARa;AASbkC,4CATa;AAUbzC,0BAVa;AAWbF,0BAXa;AAYbT,UAZa;AAabwC,wBAba;AAcbtC,UAda;AAebG,oBAfa;AAgBbF,gBAhBa;AAiBbG,0BAjBa;AAkBbb,sCAlBa;AAmBbmB,4CAnBa;AAoBbhB,8BApBa;AAqBbC,8BArBa;AAsBbF,4BAtBa;AAuBbD,0BAvBa;AAwBbI,kCAxBa;AAyBbe,oBAzBa;AA0BbC,cA1Ba;AA2BbC,4CA3Ba;AA4BbC;AA5Ba,C;;;;;;;;;;;;;;;;ACxkCf;;;;AACA;;;;;;IAEQnB,a,GAAmCkP,e,CAAnClP,a;IAAeC,e,GAAoBiP,e,CAApBjP,e;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIkP,kBAAkB,CAAtB;AACA,IAAMC,oBAAoB,EAA1B;AACA,IAAMC,mBAAmB,OAAzB;;AAEA,SAASC,cAAT,CAAwBC,MAAxB,EAAgC;AAC9B,SAAO;AAAA,WAAMvP,4BAA0BuP,MAA1B,wBAAN;AAAA,GAAP;AACD;;AAED,SAASC,eAAT,CAAyBC,EAAzB,EAA6BC,EAA7B,EAAiC;AAC/B,OAAK,IAAIzH,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B,QAAM0H,MAAMF,GAAGxH,CAAH,CAAZ;AACAwH,OAAGxH,CAAH,IAAQyH,GAAGzH,CAAH,CAAR;AACAyH,OAAGzH,CAAH,IAAQ0H,GAAR;AACD;AACF;;AAED,SAASC,WAAT,GAA+B;AAAA,MAAVnI,IAAU,uEAAH,CAAG;;AAC7B,MAAMG,QAAQ,EAAd;AACA,SAAOA,MAAMhD,MAAN,GAAe6C,IAAtB,EAA4B;AAC1BG,UAAM/C,IAAN,CAAW,CAAX;AACD;AACD,SAAO+C,KAAP;AACD;;AAED;AACA;AACA;;AAEA,IAAMiI,KAAK,SAALA,EAAK;AAAA,SAAMC,KAAKC,EAAX;AAAA,CAAX;AACA,IAAMC,qBAAqB,SAArBA,kBAAqB,CAACC,GAAD;AAAA,SAASA,MAAM,GAAN,GAAYH,KAAKC,EAA1B;AAAA,CAA3B;AACA,IAAMG,qBAAqB,SAArBA,kBAAqB,CAACC,GAAD;AAAA,SAASA,MAAM,GAAN,GAAYL,KAAKC,EAA1B;AAAA,CAA3B;IACQK,K,GAAiCN,I,CAAjCM,K;IAAOC,K,GAA0BP,I,CAA1BO,K;IAAOC,I,GAAmBR,I,CAAnBQ,I;IAAMC,G,GAAaT,I,CAAbS,G;IAAKC,G,GAAQV,I,CAARU,G;;AACjC,IAAMC,WAAWnB,eAAe,UAAf,CAAjB;AACA,IAAMoB,YAAYpB,eAAe,WAAf,CAAlB;;AAEA,SAASqB,iBAAT,CAA2BC,EAA3B,EAA+B;AAC7B,MAAI5I,IAAI,CAAR;AACA,SAAOA,IAAI4I,EAAX,EAAe;AACb5I,SAAK,CAAL;AACD;AACD,SAAOA,CAAP;AACD;;AAED,SAAS6I,YAAT,CAAsBC,CAAtB,EAAyB;AACvB,SAAOA,MAAMH,kBAAkBG,CAAlB,CAAb;AACD;;AAED,SAASC,QAAT,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwB;AACtB,MAAIC,IAAI,CAAR;AACA,OAAK,IAAIjJ,IAAI,CAAb,EAAgBA,KAAKgJ,CAArB,EAAwB,EAAEhJ,CAA1B,EAA6B;AAC3BiJ,SAAK,CAACF,IAAI/I,CAAJ,GAAQ,CAAT,IAAcA,CAAnB;AACD;AACD,SAAO6H,KAAKO,KAAL,CAAWa,CAAX,CAAP;AACD;;AAED,SAASC,gBAAT,CAA0BH,CAA1B,EAA6BC,CAA7B,EAAgC;AAC9B,MAAID,IAAIC,CAAR,EAAW;AACT,WAAO,CAAP;AACD;;AAED,MAAMC,IAAItB,YAAYqB,CAAZ,CAAV;AACA,OAAK,IAAIhJ,IAAI,CAAb,EAAgBA,IAAIgJ,CAApB,EAAuB,EAAEhJ,CAAzB,EAA4B;AAC1BiJ,MAAEjJ,CAAF,IAAOA,CAAP;AACD;AACD,SAAOiJ,CAAP;AACD;;AAED,SAASE,eAAT,CAAyBJ,CAAzB,EAA4BC,CAA5B,EAA+BC,CAA/B,EAAkC;AAChC,MAAIG,SAAS,CAAb;AACA,OAAK,IAAIpJ,IAAIgJ,IAAI,CAAjB,EAAoBhJ,KAAK,CAAzB,EAA4B,EAAEA,CAA9B,EAAiC;AAC/B,QAAIiJ,EAAEjJ,CAAF,IAAO+I,IAAIC,CAAJ,GAAQhJ,CAAnB,EAAsB;AACpB,UAAIqJ,IAAIJ,EAAEjJ,CAAF,IAAO,CAAf;AACA,aAAOA,IAAIgJ,CAAX,EAAc;AACZC,UAAEjJ,GAAF,IAASqJ,GAAT;AACD;AACDD,eAAS,CAAT;AACA;AACD;AACF;AACD,SAAOA,MAAP;AACD;;AAED,IAAME,aAAa,SAAbA,UAAa,CAACC,IAAD,EAAU;AAC3B,iCAAcA,IAAd,EAAsB,EAAE7P,QAAQ,IAAV,EAAtB;AACAwN,oBAAkBqC,IAAlB;AACD,CAHD;;AAKA,IAAMC,UAAU,SAAVA,OAAU;AAAA,SAAMtC,eAAN;AAAA,CAAhB;;AAEA,SAASuC,MAAT,GAA4C;AAAA,MAA5BC,QAA4B,uEAAjB,CAAiB;AAAA,MAAdC,QAAc,uEAAH,CAAG;;AAC1C,MAAMC,QAAQD,WAAWD,QAAzB;AACA,SAAOA,WAAWE,QAAQ/B,KAAK4B,MAAL,EAA1B;AACD;;AAED,IAAMI,WAAWxC,eAAe,UAAf,CAAjB;;AAEA;AACA,SAASyC,GAAT,CAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,GAAnB,EAAwB;AACtBA,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACD;;AAED,SAASE,QAAT,CAAkBH,CAAlB,EAAqBC,CAArB,EAAwBC,GAAxB,EAA6B;AAC3BA,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACAC,MAAI,CAAJ,IAASF,EAAE,CAAF,IAAOC,EAAE,CAAF,CAAhB;AACD;;AAED,SAASG,cAAT,CAAwBC,GAAxB,EAA6BC,MAA7B,EAAqC;AACnCD,MAAI,CAAJ,KAAUC,MAAV;AACAD,MAAI,CAAJ,KAAUC,MAAV;AACAD,MAAI,CAAJ,KAAUC,MAAV;AACD;;AAED,SAASC,gBAAT,CAA0BF,GAA1B,EAA+BC,MAA/B,EAAuC;AACrCD,MAAI,CAAJ,KAAUC,MAAV;AACAD,MAAI,CAAJ,KAAUC,MAAV;AACD;;AAED,SAASE,GAAT,CAAa1B,CAAb,EAAgB2B,CAAhB,EAAmB;AACjB,SAAO3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP,GAAc3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAArB,GAA4B3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAA1C;AACD;;AAED,SAASC,KAAT,CAAe5B,CAAf,EAAkB2B,CAAlB,EAAqBE,OAArB,EAA8B;AAC5B,OAAK,IAAI1K,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B,SAAK,IAAIqJ,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BqB,cAAQ1K,CAAR,EAAWqJ,CAAX,IAAgBR,EAAE7I,CAAF,IAAOwK,EAAEnB,CAAF,CAAvB;AACD;AACF;AACF;;AAED,SAASsB,KAAT,CAAe9B,CAAf,EAAkB2B,CAAlB,EAAqBP,GAArB,EAA0B;AACxB,MAAMW,KAAK/B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP,GAAc3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAhC;AACA,MAAMK,KAAKhC,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP,GAAc3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAhC;AACA,MAAMM,KAAKjC,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP,GAAc3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAhC;AACAP,MAAI,CAAJ,IAASW,EAAT;AACAX,MAAI,CAAJ,IAASY,EAAT;AACAZ,MAAI,CAAJ,IAASa,EAAT;AACD;;AAED,SAASC,IAAT,CAAclC,CAAd,EAAwB;AAAA,MAAPG,CAAO,uEAAH,CAAG;;AACtB,UAAQA,CAAR;AACE,SAAK,CAAL;AACE,aAAOnB,KAAKmD,GAAL,CAASnC,CAAT,CAAP;AACF,SAAK,CAAL;AACE,aAAOhB,KAAKoD,IAAL,CAAUpC,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAP,GAAcA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAA/B,CAAP;AACF,SAAK,CAAL;AACE,aAAOhB,KAAKoD,IAAL,CAAUpC,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAP,GAAcA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAArB,GAA4BA,EAAE,CAAF,IAAOA,EAAE,CAAF,CAA7C,CAAP;AACF;AAAS;AACP,YAAIqC,MAAM,CAAV;AACA,aAAK,IAAIlL,IAAI,CAAb,EAAgBA,IAAIgJ,CAApB,EAAuBhJ,GAAvB,EAA4B;AAC1BkL,iBAAOrC,EAAE7I,CAAF,IAAO6I,EAAE7I,CAAF,CAAd;AACD;AACD,eAAO6H,KAAKoD,IAAL,CAAUC,GAAV,CAAP;AACD;AAbH;AAeD;;AAED,SAASC,SAAT,CAAmBtC,CAAnB,EAAsB;AACpB,MAAMuC,MAAML,KAAKlC,CAAL,CAAZ;AACA,MAAIuC,QAAQ,GAAZ,EAAiB;AACfvC,MAAE,CAAF,KAAQuC,GAAR;AACAvC,MAAE,CAAF,KAAQuC,GAAR;AACAvC,MAAE,CAAF,KAAQuC,GAAR;AACD;AACD,SAAOA,GAAP;AACD;;AAED,SAASC,cAAT,CAAwBxC,CAAxB,EAA2B2B,CAA3B,EAA8Bc,CAA9B,EAAiCC,KAAjC,EAAwC;AACtC,MAAMC,KAAK3C,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAlB;AACA,MAAM4C,KAAK5C,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAlB;AACA,MAAM6C,KAAK7C,EAAE,CAAF,IAAOA,EAAE,CAAF,CAAlB;AACA,MAAMI,IAAIpB,KAAKoD,IAAL,CAAUO,KAAKC,EAAL,GAAUC,EAApB,CAAV;;AAEA,MAAIC,WAAJ;AACA,MAAIC,WAAJ;AACA,MAAIC,WAAJ;;AAEA;AACA,MAAIL,KAAKC,EAAL,IAAWD,KAAKE,EAApB,EAAwB;AACtBC,SAAK,CAAL;AACAC,SAAK,CAAL;AACAC,SAAK,CAAL;AACD,GAJD,MAIO,IAAIJ,KAAKC,EAAT,EAAa;AAClBC,SAAK,CAAL;AACAC,SAAK,CAAL;AACAC,SAAK,CAAL;AACD,GAJM,MAIA;AACLF,SAAK,CAAL;AACAC,SAAK,CAAL;AACAC,SAAK,CAAL;AACD;;AAED,MAAM9B,IAAIlB,EAAE8C,EAAF,IAAQ1C,CAAlB;AACA,MAAMe,IAAInB,EAAE+C,EAAF,IAAQ3C,CAAlB;AACA,MAAM6C,IAAIjD,EAAEgD,EAAF,IAAQ5C,CAAlB;AACA,MAAMvB,MAAMG,KAAKoD,IAAL,CAAUlB,IAAIA,CAAJ,GAAQ+B,IAAIA,CAAtB,CAAZ;;AAEA,MAAIP,UAAU,CAAd,EAAiB;AACf,QAAMQ,WAAWlE,KAAKmE,GAAL,CAAST,KAAT,CAAjB;AACA,QAAMU,WAAWpE,KAAKqE,GAAL,CAASX,KAAT,CAAjB;;AAEA,QAAIf,CAAJ,EAAO;AACLA,QAAEmB,EAAF,IAAQ,CAACG,IAAIG,QAAJ,GAAelC,IAAIC,CAAJ,GAAQ+B,QAAxB,IAAoCrE,GAA5C;AACA8C,QAAEoB,EAAF,IAAQG,WAAWrE,GAAnB;AACA8C,QAAEqB,EAAF,IAAQ,CAAC,EAAE9B,IAAIkC,QAAN,IAAkBjC,IAAI8B,CAAJ,GAAQC,QAA3B,IAAuCrE,GAA/C;AACD;;AAED,QAAI4D,CAAJ,EAAO;AACLA,QAAEK,EAAF,IAAQ,CAAC,EAAEG,IAAIC,QAAN,IAAkBhC,IAAIC,CAAJ,GAAQiC,QAA3B,IAAuCvE,GAA/C;AACA4D,QAAEM,EAAF,IAAQK,WAAWvE,GAAnB;AACA4D,QAAEO,EAAF,IAAQ,CAAC9B,IAAIgC,QAAJ,GAAe/B,IAAI8B,CAAJ,GAAQG,QAAxB,IAAoCvE,GAA5C;AACD;AACF,GAfD,MAeO;AACL,QAAI8C,CAAJ,EAAO;AACLA,QAAEmB,EAAF,IAAQG,IAAIpE,GAAZ;AACA8C,QAAEoB,EAAF,IAAQ,CAAR;AACApB,QAAEqB,EAAF,IAAQ,CAAC9B,CAAD,GAAKrC,GAAb;AACD;;AAED,QAAI4D,CAAJ,EAAO;AACLA,QAAEK,EAAF,IAAQ,CAAC5B,CAAD,GAAKC,CAAL,GAAStC,GAAjB;AACA4D,QAAEM,EAAF,IAAQlE,GAAR;AACA4D,QAAEO,EAAF,IAAQ,CAAC7B,CAAD,GAAK8B,CAAL,GAASpE,GAAjB;AACD;AACF;AACF;;AAED,SAASyE,aAAT,CAAuBpC,CAAvB,EAA0BC,CAA1B,EAA6BoC,UAA7B,EAAyC;AACvC,MAAMC,WAAW9B,IAAIP,CAAJ,EAAOA,CAAP,CAAjB;;AAEA,MAAIqC,aAAa,CAAjB,EAAoB;AAClBD,eAAW,CAAX,IAAgB,CAAhB;AACAA,eAAW,CAAX,IAAgB,CAAhB;AACAA,eAAW,CAAX,IAAgB,CAAhB;AACA,WAAO,KAAP;AACD;;AAED,MAAME,QAAQ/B,IAAIR,CAAJ,EAAOC,CAAP,IAAYqC,QAA1B;;AAEA,OAAK,IAAIrM,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BoM,eAAWpM,CAAX,IAAgBgK,EAAEhK,CAAF,CAAhB;AACD;AACDmK,iBAAeiC,UAAf,EAA2BE,KAA3B;;AAEA,SAAO,IAAP;AACD;;AAED,SAASC,KAAT,CAAe1D,CAAf,EAAkB2B,CAAlB,EAAqB;AACnB,SAAO3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP,GAAc3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAA5B;AACD;;AAED,SAASgC,eAAT,CAAyBzC,CAAzB,EAA4BC,CAA5B,EAA+BoC,UAA/B,EAA2C;AACzC,MAAMC,WAAWE,MAAMvC,CAAN,EAASA,CAAT,CAAjB;;AAEA,MAAIqC,aAAa,CAAjB,EAAoB;AAClBD,eAAW,CAAX,IAAgB,CAAhB;AACAA,eAAW,CAAX,IAAgB,CAAhB;AACA,WAAO,KAAP;AACD;;AAED,MAAME,QAAQC,MAAMxC,CAAN,EAASC,CAAT,IAAcqC,QAA5B;;AAEA,OAAK,IAAIrM,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BoM,eAAWpM,CAAX,IAAgBgK,EAAEhK,CAAF,CAAhB;AACD;AACDsK,mBAAiB8B,UAAjB,EAA6BE,KAA7B;;AAEA,SAAO,IAAP;AACD;;AAED,SAASG,sBAAT,CAAgC5D,CAAhC,EAAmC2B,CAAnC,EAAsC;AACpC,SACE,CAAC3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAR,KAAiB3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAxB,IACA,CAAC3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAR,KAAiB3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAxB,CADA,GAEA,CAAC3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAR,KAAiB3B,EAAE,CAAF,IAAO2B,EAAE,CAAF,CAAxB,CAHF;AAKD;;AAED,SAASkC,mBAAT,CAA6BlF,EAA7B,EAAiCC,EAAjC,EAAqC;AACnC,MAAMkF,YAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAlB;AACAhC,QAAMnD,EAAN,EAAUC,EAAV,EAAckF,SAAd;AACA,SAAO9E,KAAK+E,KAAL,CAAW7B,KAAK4B,SAAL,CAAX,EAA4BpC,IAAI/C,EAAJ,EAAQC,EAAR,CAA5B,CAAP;AACD;;AAED,SAASoF,iBAAT,CAA2BC,IAA3B,EAAiCC,QAAjC,EAA2CC,QAA3C,EAAqD;AACnD,MAAMC,mBAAmBpF,KAAKmD,GAAL,CAAS8B,OAAOE,QAAhB,CAAzB;AACA,SACE,IACAnF,KAAKoD,IAAL,CAAU,IAAIpD,KAAKC,EAAT,GAAciF,QAAxB,CADA,GAEAlF,KAAKqF,GAAL,CAAS,UAAED,gBAAF,EAAsB,CAAtB,KAA4B,IAAIF,QAAhC,CAAT,CAHF;AAKD;;AAED,SAASI,cAAT,CAAwBL,IAAxB,EAA8BC,QAA9B,EAAwCC,QAAxC,EAAkD;AAChD,MAAMC,mBAAmBpF,KAAKmD,GAAL,CAAS8B,OAAOE,QAAhB,CAAzB;AACA,SAAOnF,KAAKqF,GAAL,CAAS,UAAED,gBAAF,EAAsB,CAAtB,KAA4B,IAAIF,QAAhC,CAAT,CAAP;AACD;;AAED,SAASK,OAAT,CAAiBvE,CAAjB,EAAoB2B,CAApB,EAAuB6C,OAAvB,EAAgC;AAC9B,OAAK,IAAIrN,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B,SAAK,IAAIqJ,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BgE,cAAQrN,CAAR,EAAWqJ,CAAX,IAAgBR,EAAE7I,CAAF,IAAOwK,EAAEnB,CAAF,CAAvB;AACD;AACF;AACF;;AAED,SAASiE,MAAT,CAAgBC,GAAhB,EAAqB;AACnB,SAAO1F,KAAKoD,IAAL,CAAUsC,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAT,GAAkBA,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAArC,CAAP;AACD;;AAED,SAASC,WAAT,CAAqB3E,CAArB,EAAwB;AACtB,MAAMuC,MAAMkC,OAAOzE,CAAP,CAAZ;AACA,MAAIuC,QAAQ,GAAZ,EAAiB;AACfvC,MAAE,CAAF,KAAQuC,GAAR;AACAvC,MAAE,CAAF,KAAQuC,GAAR;AACD;AACD,SAAOA,GAAP;AACD;;AAED,SAASqC,cAAT,GAAiC;AAAA,oCAAN/N,IAAM;AAANA,QAAM;AAAA;;AAC/B,MAAIA,KAAK/C,MAAL,KAAgB,CAApB,EAAuB;AACrB,WAAO+C,KAAK,CAAL,EAAQ,CAAR,IAAaA,KAAK,CAAL,EAAQ,CAAR,CAAb,GAA0BA,KAAK,CAAL,EAAQ,CAAR,IAAaA,KAAK,CAAL,EAAQ,CAAR,CAA9C;AACD;AACD,MAAIA,KAAK/C,MAAL,KAAgB,CAApB,EAAuB;AACrB,WAAO+C,KAAK,CAAL,IAAUA,KAAK,CAAL,CAAV,GAAoBA,KAAK,CAAL,IAAUA,KAAK,CAAL,CAArC;AACD;AACD,SAAO7D,OAAO6R,GAAd;AACD;;AAED,SAASC,WAAT,CAAqBC,OAArB,EAA8BC,OAA9B,EAAuC;AACrC,MAAIC,aAAJ;AACA,MAAIpG,YAAJ;AACA,MAAIqG,gBAAJ;AACA,MAAMzB,QAAQ,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAd;;AAEA;AACA,OAAK,IAAItM,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B+N,cAAUlG,KAAKmD,GAAL,CAAS4C,QAAQ5N,CAAR,EAAW,CAAX,CAAT,CAAV;AACA,QAAI,CAAC0H,MAAMG,KAAKmD,GAAL,CAAS4C,QAAQ5N,CAAR,EAAW,CAAX,CAAT,CAAP,IAAkC+N,OAAtC,EAA+C;AAC7CA,gBAAUrG,GAAV;AACD;AACD,QAAI,CAACA,MAAMG,KAAKmD,GAAL,CAAS4C,QAAQ5N,CAAR,EAAW,CAAX,CAAT,CAAP,IAAkC+N,OAAtC,EAA+C;AAC7CA,gBAAUrG,GAAV;AACD;AACD4E,UAAMtM,CAAN,IAAW,IAAI+N,OAAf;AACD;;AAED;;AAEA;AACAA,YAAUzB,MAAM,CAAN,IAAWzE,KAAKmD,GAAL,CAAS4C,QAAQ,CAAR,EAAW,CAAX,CAAT,CAArB;AACAE,SAAO,CAAP;AACA,MAAI,CAACpG,MAAM4E,MAAM,CAAN,IAAWzE,KAAKmD,GAAL,CAAS4C,QAAQ,CAAR,EAAW,CAAX,CAAT,CAAlB,KAA8CG,OAAlD,EAA2D;AACzDA,cAAUrG,GAAV;AACAoG,WAAO,CAAP;AACD;AACD,MAAI,CAACpG,MAAM4E,MAAM,CAAN,IAAWzE,KAAKmD,GAAL,CAAS4C,QAAQ,CAAR,EAAW,CAAX,CAAT,CAAlB,KAA8CG,OAAlD,EAA2D;AACzDD,WAAO,CAAP;AACD;AACD,MAAIA,SAAS,CAAb,EAAgB;AACdvG,oBAAgBqG,QAAQE,IAAR,CAAhB,EAA+BF,QAAQ,CAAR,CAA/B;AACAtB,UAAMwB,IAAN,IAAcxB,MAAM,CAAN,CAAd;AACD;AACDuB,UAAQ,CAAR,IAAaC,IAAb;;AAEAF,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,CAAjB;AACAA,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,CAAjB;;AAEA;AACAA,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAjC;AACAA,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAjC;AACAG,YAAUzB,MAAM,CAAN,IAAWzE,KAAKmD,GAAL,CAAS4C,QAAQ,CAAR,EAAW,CAAX,CAAT,CAArB;AACAE,SAAO,CAAP;AACA,MAAI,CAACpG,MAAM4E,MAAM,CAAN,IAAWzE,KAAKmD,GAAL,CAAS4C,QAAQ,CAAR,EAAW,CAAX,CAAT,CAAlB,KAA8CG,OAAlD,EAA2D;AACzDD,WAAO,CAAP;AACAvG,oBAAgBqG,QAAQ,CAAR,CAAhB,EAA4BA,QAAQ,CAAR,CAA5B;AACAtB,UAAM,CAAN,IAAWA,MAAM,CAAN,CAAX;AACD;AACDuB,UAAQ,CAAR,IAAaC,IAAb;AACAF,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,CAAjB;;AAEA;AACAA,UAAQ,CAAR,EAAW,CAAX,KAAiBA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAjC;AACAA,UAAQ,CAAR,EAAW,CAAX,KACEA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CADlD;AAEAC,UAAQ,CAAR,IAAa,CAAb;AACD;;AAED,SAASG,UAAT,CAAoBJ,OAApB,EAA6BC,OAA7B,EAAsCI,GAAtC,EAA2C;AACzC;AACA,MAAI/C,MAAM+C,IAAIJ,QAAQ,CAAR,CAAJ,CAAV;AACAI,MAAIJ,QAAQ,CAAR,CAAJ,IAAkBI,IAAI,CAAJ,CAAlB;AACAA,MAAI,CAAJ,IAAS/C,GAAT;;AAEAA,QAAM+C,IAAIJ,QAAQ,CAAR,CAAJ,CAAN;AACAI,MAAIJ,QAAQ,CAAR,CAAJ,IAAkBI,IAAI,CAAJ,CAAlB;AACAA,MAAI,CAAJ,IAAS/C,MAAM0C,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAA/B;;AAEA/C,QAAM+C,IAAIJ,QAAQ,CAAR,CAAJ,CAAN;AACAI,MAAIJ,QAAQ,CAAR,CAAJ,IAAkBI,IAAI,CAAJ,CAAlB;AACAA,MAAI,CAAJ,IAAS/C,MAAM0C,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAAtB,GAA+BL,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAAxD;;AAEA;AACAA,MAAI,CAAJ,KAAUL,QAAQ,CAAR,EAAW,CAAX,CAAV;AACAK,MAAI,CAAJ,IAAS,CAACA,IAAI,CAAJ,IAASL,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAA1B,IAAoCL,QAAQ,CAAR,EAAW,CAAX,CAA7C;AACAK,MAAI,CAAJ,IACE,CAACA,IAAI,CAAJ,IAASL,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAAzB,GAAkCL,QAAQ,CAAR,EAAW,CAAX,IAAgBK,IAAI,CAAJ,CAAnD,IAA6DL,QAAQ,CAAR,EAAW,CAAX,CAD/D;AAED;;AAED,SAASM,cAAT,CAAwBN,OAAxB,EAAiCK,GAAjC,EAAsCE,GAAtC,EAA2C;AACzC,MAAMC,KAAKR,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMS,KAAKT,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMU,KAAKV,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMW,KAAKX,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMY,KAAKZ,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMa,KAAKb,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMc,KAAKd,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMe,KAAKf,QAAQ,CAAR,EAAW,CAAX,CAAX;AACA,MAAMgB,KAAKhB,QAAQ,CAAR,EAAW,CAAX,CAAX;;AAEA;AACA,MAAMiB,KAAK,CAACpB,eAAee,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAME,KAAK,CAACrB,eAAec,EAAf,EAAmBG,EAAnB,EAAuBD,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMG,KAAK,CAACtB,eAAec,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;;AAEA,MAAMK,KAAK,CAACvB,eAAeY,EAAf,EAAmBM,EAAnB,EAAuBL,EAAvB,EAA2BM,EAA3B,CAAZ;AACA,MAAMK,KAAK,CAACxB,eAAeW,EAAf,EAAmBM,EAAnB,EAAuBJ,EAAvB,EAA2BM,EAA3B,CAAZ;AACA,MAAMM,KAAK,CAACzB,eAAeW,EAAf,EAAmBM,EAAnB,EAAuBL,EAAvB,EAA2BM,EAA3B,CAAZ;;AAEA,MAAMQ,KAAK,CAAC1B,eAAeY,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMW,KAAK,CAAC3B,eAAeW,EAAf,EAAmBG,EAAnB,EAAuBD,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMY,KAAK,CAAC5B,eAAeW,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;;AAEA;AACA,MAAMc,MAAMlB,KAAKS,EAAL,GAAUR,KAAKS,EAAf,GAAoBR,KAAKS,EAArC;;AAEA;AACA,MAAMvH,KAAKqH,KAAKZ,IAAI,CAAJ,CAAL,GAAce,KAAKf,IAAI,CAAJ,CAAnB,GAA4BkB,KAAKlB,IAAI,CAAJ,CAA5C;AACA,MAAMxG,KAAKqH,KAAKb,IAAI,CAAJ,CAAL,GAAcgB,KAAKhB,IAAI,CAAJ,CAAnB,GAA4BmB,KAAKnB,IAAI,CAAJ,CAA5C;AACA,MAAMsB,KAAKR,KAAKd,IAAI,CAAJ,CAAL,GAAciB,KAAKjB,IAAI,CAAJ,CAAnB,GAA4BoB,KAAKpB,IAAI,CAAJ,CAA5C;;AAEA;AACAE,MAAI,CAAJ,IAAS3G,KAAK8H,GAAd;AACAnB,MAAI,CAAJ,IAAS1G,KAAK6H,GAAd;AACAnB,MAAI,CAAJ,IAASoB,KAAKD,GAAd;AACD;;AAED,SAASE,iBAAT,CAA2B5B,OAA3B,EAAoC6B,IAApC,EAA0CC,KAA1C,EAAiD;AAC/C,MAAM7G,IACJ+E,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAAhB,GAA0B7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAA1C,GAAoD7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CADtE;AAEA,MAAMjF,IACJoD,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAAhB,GAA0B7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAA1C,GAAoD7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CADtE;AAEA,MAAMnE,IACJsC,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAAhB,GAA0B7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CAA1C,GAAoD7B,QAAQ,CAAR,EAAW,CAAX,IAAgB6B,KAAK,CAAL,CADtE;;AAGAC,QAAM,CAAN,IAAW7G,CAAX;AACA6G,QAAM,CAAN,IAAWlF,CAAX;AACAkF,QAAM,CAAN,IAAWpE,CAAX;AACD;;AAED,SAASqE,gBAAT,CAA0BC,KAA1B,EAAiCC,KAAjC,EAAwCnF,OAAxC,EAAiD;AAC/C,MAAMhD,MAAM,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAD,EAAY,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAZ,EAAuB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAvB,CAAZ;;AAEA,OAAK,IAAI1H,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B0H,QAAI,CAAJ,EAAO1H,CAAP,IACE4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAAd,GACA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CADd,GAEA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAHhB;AAIA0H,QAAI,CAAJ,EAAO1H,CAAP,IACE4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAAd,GACA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CADd,GAEA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAHhB;AAIA0H,QAAI,CAAJ,EAAO1H,CAAP,IACE4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAAd,GACA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CADd,GAEA4P,MAAM,CAAN,EAAS,CAAT,IAAcC,MAAM,CAAN,EAAS7P,CAAT,CAHhB;AAID;;AAED,OAAK,IAAIqJ,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BqB,YAAQrB,CAAR,EAAW,CAAX,IAAgB3B,IAAI2B,CAAJ,EAAO,CAAP,CAAhB;AACAqB,YAAQrB,CAAR,EAAW,CAAX,IAAgB3B,IAAI2B,CAAJ,EAAO,CAAP,CAAhB;AACAqB,YAAQrB,CAAR,EAAW,CAAX,IAAgB3B,IAAI2B,CAAJ,EAAO,CAAP,CAAhB;AACD;AACF;;AAED,SAASyG,cAAT,CAAwB/F,CAAxB,EAA2BC,CAA3B,EAA8B+F,IAA9B,EAAoCC,IAApC,EAA0CC,IAA1C,EAAgDC,IAAhD,EAAsDC,WAAtD,EAAmE;AACjE;AACA,MAAIH,SAASC,IAAb,EAAmB;AACjBlY,kBAAc,wDAAd;AACD;;AAED;AACA;AACA,OAAK,IAAIiI,IAAI,CAAb,EAAgBA,IAAI+P,IAApB,EAA0B/P,GAA1B,EAA+B;AAC7B;AACA,SAAK,IAAIqJ,IAAI,CAAb,EAAgBA,IAAI6G,IAApB,EAA0B7G,GAA1B,EAA+B;AAC7B8G,kBAAYnQ,CAAZ,EAAeqJ,CAAf,IAAoB,CAApB;AACA;AACA,WAAK,IAAI+G,IAAI,CAAb,EAAgBA,IAAIJ,IAApB,EAA0BI,GAA1B,EAA+B;AAC7BD,oBAAYnQ,CAAZ,EAAeqJ,CAAf,KAAqBU,EAAE/J,CAAF,EAAKoQ,CAAL,IAAUpG,EAAEoG,CAAF,EAAK/G,CAAL,CAA/B;AACD;AACF;AACF;AACF;;AAED,SAASgH,YAAT,CAAsBC,MAAtB,EAA8BC,QAA9B,EAAwC;AACtC,MAAI7I,YAAJ;AACAA,QAAM4I,OAAO,CAAP,EAAU,CAAV,CAAN;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiB7I,GAAjB;AACAA,QAAM4I,OAAO,CAAP,EAAU,CAAV,CAAN;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiB7I,GAAjB;AACAA,QAAM4I,OAAO,CAAP,EAAU,CAAV,CAAN;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiB7I,GAAjB;;AAEA6I,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACAC,WAAS,CAAT,EAAY,CAAZ,IAAiBD,OAAO,CAAP,EAAU,CAAV,CAAjB;AACD;;AAED,SAASE,SAAT,CAAmBF,MAAnB,EAA2BG,QAA3B,EAAqC;AACnC,MAAMrC,KAAKkC,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAMjC,KAAKiC,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAMhC,KAAKgC,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM/B,KAAK+B,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM9B,KAAK8B,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM7B,KAAK6B,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM5B,KAAK4B,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM3B,KAAK2B,OAAO,CAAP,EAAU,CAAV,CAAX;AACA,MAAM1B,KAAK0B,OAAO,CAAP,EAAU,CAAV,CAAX;;AAEA;AACA,MAAMzB,KAAK,CAACpB,eAAee,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAME,KAAK,CAACrB,eAAec,EAAf,EAAmBG,EAAnB,EAAuBD,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMG,KAAK,CAACtB,eAAec,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;;AAEA,MAAMK,KAAK,CAACvB,eAAeY,EAAf,EAAmBM,EAAnB,EAAuBL,EAAvB,EAA2BM,EAA3B,CAAZ;AACA,MAAMK,KAAK,CAACxB,eAAeW,EAAf,EAAmBM,EAAnB,EAAuBJ,EAAvB,EAA2BM,EAA3B,CAAZ;AACA,MAAMM,KAAK,CAACzB,eAAeW,EAAf,EAAmBM,EAAnB,EAAuBL,EAAvB,EAA2BM,EAA3B,CAAZ;;AAEA,MAAMQ,KAAK,CAAC1B,eAAeY,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMW,KAAK,CAAC3B,eAAeW,EAAf,EAAmBG,EAAnB,EAAuBD,EAAvB,EAA2BG,EAA3B,CAAZ;AACA,MAAMY,KAAK,CAAC5B,eAAeW,EAAf,EAAmBG,EAAnB,EAAuBF,EAAvB,EAA2BG,EAA3B,CAAZ;;AAEA;AACA,MAAMc,MAAMlB,KAAKS,EAAL,GAAUR,KAAKS,EAAf,GAAoBR,KAAKS,EAArC;;AAEA0B,WAAS,CAAT,EAAY,CAAZ,IAAiB5B,KAAKS,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiB3B,KAAKQ,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiB1B,KAAKO,GAAtB;;AAEAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBzB,KAAKM,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBxB,KAAKK,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBvB,KAAKI,GAAtB;;AAEAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBtB,KAAKG,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBrB,KAAKE,GAAtB;AACAmB,WAAS,CAAT,EAAY,CAAZ,IAAiBpB,KAAKC,GAAtB;AACD;;AAED,SAASoB,WAAT,CAAqB9C,OAArB,EAA8B;AAC5B,OAAK,IAAI5N,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B4N,YAAQ5N,CAAR,EAAW,CAAX,IAAgB4N,QAAQ5N,CAAR,EAAW,CAAX,IAAgB4N,QAAQ5N,CAAR,EAAW,CAAX,IAAgB,CAAhD;AACA4N,YAAQ5N,CAAR,EAAWA,CAAX,IAAgB,CAAhB;AACD;AACF;;AAED,SAAS2Q,cAAT,CAAwB/C,OAAxB,EAAiC;AAC/B,SACEA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAAhC,GACAA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CADhC,GAEAA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAFhC,GAGAA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAHhC,GAIAA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAJhC,GAKAA,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CANlC;AAQD;;AAED,SAASgD,qBAAT,CAA+BC,MAA/B,EAAuCjD,OAAvC,EAAgD;AAC9C,MAAMkD,KAAKD,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAME,KAAKF,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMG,KAAKH,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMI,KAAKJ,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;;AAEA,MAAMK,KAAKL,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMM,KAAKN,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMO,KAAKP,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;;AAEA,MAAMQ,KAAKR,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMS,KAAKT,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;AACA,MAAMU,KAAKV,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAvB;;AAEA,MAAMW,KAAKN,KAAKC,EAAL,GAAUC,EAArB;AACA;AACA,MAAIK,IAAI,KAAKX,KAAKU,EAAV,CAAR;AACA,MAAME,IAAI,CAACZ,KAAKU,EAAN,IAAYC,CAAtB;AACAA,OAAK,CAAL;;AAEA7D,UAAQ,CAAR,EAAW,CAAX,IAAgBsD,KAAKO,CAAL,GAASC,CAAzB;AACA9D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAACyD,KAAKJ,EAAN,IAAYQ,CAA5B;AACA7D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAAC0D,KAAKN,EAAN,IAAYS,CAA5B;;AAEA7D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAACyD,KAAKJ,EAAN,IAAYQ,CAA5B;AACA7D,UAAQ,CAAR,EAAW,CAAX,IAAgBuD,KAAKM,CAAL,GAASC,CAAzB;AACA9D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAAC2D,KAAKR,EAAN,IAAYU,CAA5B;;AAEA7D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAAC0D,KAAKN,EAAN,IAAYS,CAA5B;AACA7D,UAAQ,CAAR,EAAW,CAAX,IAAgB,CAAC2D,KAAKR,EAAN,IAAYU,CAA5B;AACA7D,UAAQ,CAAR,EAAW,CAAX,IAAgBwD,KAAKK,CAAL,GAASC,CAAzB;AACD;;AAED,SAASC,gBAAT,CAA0BC,IAA1B,EAAgCC,IAAhC,EAAsC;AACpC,MAAI,CAACD,KAAKjV,MAAN,KAAiBkV,KAAKlV,MAA1B,EAAkC;AAChC,WAAO,KAAP;AACD;;AAED,WAASmV,OAAT,CAAiBC,OAAjB,EAA0B9V,KAA1B,EAAiC;AAC/B,WAAO8V,YAAYF,KAAK5V,KAAL,CAAnB;AACD;AACD,SAAO2V,KAAKI,KAAL,CAAWF,OAAX,CAAP;AACD;;AAED,SAASG,OAAT,CAAiBlI,CAAjB,EAAoBf,CAApB,EAAuBkJ,CAAvB,EAA0BnS,CAA1B,EAA6B;AAC3B,MAAIC,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAI+G,UAAJ;AACA,MAAI+B,WAAJ;AACA,MAAIC,WAAJ;AACA,MAAIC,eAAJ;AACA,MAAIC,cAAJ;AACA,MAAI/G,cAAJ;AACA,MAAIgH,UAAJ;AACA,MAAIC,YAAJ;AACA,MAAIC,WAAJ;AACA,MAAIf,UAAJ;AACA,MAAIgB,UAAJ;AACA,MAAIC,UAAJ;AACA,MAAI7G,UAAJ;AACA,MAAIpE,YAAJ;AACA,MAAMsC,IAAIrC,YAAYqB,CAAZ,CAAV;AACA,MAAMsC,IAAI3D,YAAYqB,CAAZ,CAAV;;AAEA,MAAM4J,YAAY,SAAZA,SAAY,CAACC,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,EAAiBC,EAAjB,EAAwB;AACxCN,QAAIE,GAAGC,EAAH,EAAOC,EAAP,CAAJ;AACAL,QAAIG,GAAGG,EAAH,EAAOC,EAAP,CAAJ;AACAJ,OAAGC,EAAH,EAAOC,EAAP,IAAaJ,IAAIjB,KAAKgB,IAAIC,IAAIH,GAAb,CAAjB;AACAK,OAAGG,EAAH,EAAOC,EAAP,IAAaP,IAAIhB,KAAKiB,IAAID,IAAIF,GAAb,CAAjB;AACD,GALD;;AAOA;AACA,OAAKJ,KAAK,CAAV,EAAaA,KAAKpJ,CAAlB,EAAqBoJ,IAArB,EAA2B;AACzB,SAAKD,KAAK,CAAV,EAAaA,KAAKnJ,CAAlB,EAAqBmJ,IAArB,EAA2B;AACzBpS,QAAEqS,EAAF,EAAMD,EAAN,IAAY,GAAZ;AACD;AACDpS,MAAEqS,EAAF,EAAMA,EAAN,IAAY,GAAZ;AACD;AACD,OAAKA,KAAK,CAAV,EAAaA,KAAKpJ,CAAlB,EAAqBoJ,IAArB,EAA2B;AACzBpI,MAAEoI,EAAF,IAAQF,EAAEE,EAAF,IAAQrI,EAAEqI,EAAF,EAAMA,EAAN,CAAhB;AACA9G,MAAE8G,EAAF,IAAQ,GAAR;AACD;;AAED;AACA,OAAKpS,IAAI,CAAT,EAAYA,IAAImH,iBAAhB,EAAmCnH,GAAnC,EAAwC;AACtCyS,SAAK,GAAL;AACA,SAAKL,KAAK,CAAV,EAAaA,KAAKpJ,IAAI,CAAtB,EAAyBoJ,IAAzB,EAA+B;AAC7B,WAAKD,KAAKC,KAAK,CAAf,EAAkBD,KAAKnJ,CAAvB,EAA0BmJ,IAA1B,EAAgC;AAC9BM,cAAM5K,KAAKmD,GAAL,CAASjB,EAAEqI,EAAF,EAAMD,EAAN,CAAT,CAAN;AACD;AACF;AACD,QAAIM,OAAO,GAAX,EAAgB;AACd;AACD;;AAED;AACA,QAAIzS,IAAI,CAAR,EAAW;AACTsS,cAAQ,MAAMG,EAAN,IAAYzJ,IAAIA,CAAhB,CAAR;AACD,KAFD,MAEO;AACLsJ,cAAQ,GAAR;AACD;;AAED,SAAKF,KAAK,CAAV,EAAaA,KAAKpJ,IAAI,CAAtB,EAAyBoJ,IAAzB,EAA+B;AAC7B,WAAKD,KAAKC,KAAK,CAAf,EAAkBD,KAAKnJ,CAAvB,EAA0BmJ,IAA1B,EAAgC;AAC9BQ,YAAI,QAAQ9K,KAAKmD,GAAL,CAASjB,EAAEqI,EAAF,EAAMD,EAAN,CAAT,CAAZ;;AAEA;AACA,YACEnS,IAAI,CAAJ,IACA6H,KAAKmD,GAAL,CAASkH,EAAEE,EAAF,CAAT,IAAkBO,CAAlB,KAAwB9K,KAAKmD,GAAL,CAASkH,EAAEE,EAAF,CAAT,CADxB,IAEAvK,KAAKmD,GAAL,CAASkH,EAAEC,EAAF,CAAT,IAAkBQ,CAAlB,KAAwB9K,KAAKmD,GAAL,CAASkH,EAAEC,EAAF,CAAT,CAH1B,EAIE;AACApI,YAAEqI,EAAF,EAAMD,EAAN,IAAY,GAAZ;AACD,SAND,MAMO,IAAItK,KAAKmD,GAAL,CAASjB,EAAEqI,EAAF,EAAMD,EAAN,CAAT,IAAsBG,KAA1B,EAAiC;AACtCI,cAAIR,EAAEC,EAAF,IAAQD,EAAEE,EAAF,CAAZ;AACA,cAAIvK,KAAKmD,GAAL,CAAS0H,CAAT,IAAcC,CAAd,KAAoB9K,KAAKmD,GAAL,CAAS0H,CAAT,CAAxB,EAAqC;AACnCH,gBAAIxI,EAAEqI,EAAF,EAAMD,EAAN,IAAYO,CAAhB;AACD,WAFD,MAEO;AACLnH,oBAAQ,MAAMmH,CAAN,GAAU3I,EAAEqI,EAAF,EAAMD,EAAN,CAAlB;AACAI,gBAAI,OAAO1K,KAAKmD,GAAL,CAASO,KAAT,IAAkB1D,KAAKoD,IAAL,CAAU,MAAMM,QAAQA,KAAxB,CAAzB,CAAJ;AACA,gBAAIA,QAAQ,GAAZ,EAAiB;AACfgH,kBAAI,CAACA,CAAL;AACD;AACF;AACDzG,cAAI,MAAMjE,KAAKoD,IAAL,CAAU,IAAIsH,IAAIA,CAAlB,CAAV;AACAb,cAAIa,IAAIzG,CAAR;AACA0G,gBAAMd,KAAK,MAAM5F,CAAX,CAAN;AACA4G,cAAIH,IAAIxI,EAAEqI,EAAF,EAAMD,EAAN,CAAR;AACA7G,YAAE8G,EAAF,KAASM,CAAT;AACApH,YAAE6G,EAAF,KAASO,CAAT;AACAR,YAAEE,EAAF,KAASM,CAAT;AACAR,YAAEC,EAAF,KAASO,CAAT;AACA3I,YAAEqI,EAAF,EAAMD,EAAN,IAAY,GAAZ;;AAEA;AACA,eAAK9I,IAAI,CAAT,EAAYA,KAAK+I,KAAK,CAAtB,EAAyB/I,GAAzB,EAA8B;AAC5BuJ,sBAAU7I,CAAV,EAAaV,CAAb,EAAgB+I,EAAhB,EAAoB/I,CAApB,EAAuB8I,EAAvB;AACD;AACD;AACA,eAAK9I,IAAI+I,KAAK,CAAd,EAAiB/I,KAAK8I,KAAK,CAA3B,EAA8B9I,GAA9B,EAAmC;AACjCuJ,sBAAU7I,CAAV,EAAaqI,EAAb,EAAiB/I,CAAjB,EAAoBA,CAApB,EAAuB8I,EAAvB;AACD;AACD;AACA,eAAK9I,IAAI8I,KAAK,CAAd,EAAiB9I,IAAIL,CAArB,EAAwBK,GAAxB,EAA6B;AAC3BuJ,sBAAU7I,CAAV,EAAaqI,EAAb,EAAiB/I,CAAjB,EAAoB8I,EAApB,EAAwB9I,CAAxB;AACD;AACD,eAAKA,IAAI,CAAT,EAAYA,IAAIL,CAAhB,EAAmBK,GAAnB,EAAwB;AACtBuJ,sBAAU7S,CAAV,EAAasJ,CAAb,EAAgB+I,EAAhB,EAAoB/I,CAApB,EAAuB8I,EAAvB;AACD;AACF;AACF;AACF;;AAED,SAAKC,KAAK,CAAV,EAAaA,KAAKpJ,CAAlB,EAAqBoJ,IAArB,EAA2B;AACzBpI,QAAEoI,EAAF,KAAS9G,EAAE8G,EAAF,CAAT;AACAF,QAAEE,EAAF,IAAQpI,EAAEoI,EAAF,CAAR;AACA9G,QAAE8G,EAAF,IAAQ,GAAR;AACD;AACF;;AAED;AACA,MAAIpS,KAAKmH,iBAAT,EAA4B;AAC1BnP,oBAAgB,kDAAhB;AACA,WAAO,CAAP;AACD;;AAED;AACA,OAAKqR,IAAI,CAAT,EAAYA,IAAIL,IAAI,CAApB,EAAuBK,GAAvB,EAA4B;AAC1B;AACA+G,QAAI/G,CAAJ;AACA3B,UAAMwK,EAAE9B,CAAF,CAAN;AACA,SAAKpQ,IAAIqJ,IAAI,CAAb,EAAgBrJ,IAAIgJ,CAApB,EAAuBhJ,GAAvB,EAA4B;AAC1B;AACA,UAAIkS,EAAElS,CAAF,KAAQ0H,GAAZ,EAAiB;AACf;AACA0I,YAAIpQ,CAAJ;AACA0H,cAAMwK,EAAE9B,CAAF,CAAN;AACD;AACF;AACD,QAAIA,MAAM/G,CAAV,EAAa;AACX6I,QAAE9B,CAAF,IAAO8B,EAAE7I,CAAF,CAAP;AACA6I,QAAE7I,CAAF,IAAO3B,GAAP;AACA,WAAK1H,IAAI,CAAT,EAAYA,IAAIgJ,CAAhB,EAAmBhJ,GAAnB,EAAwB;AACtB0H,cAAM3H,EAAEC,CAAF,EAAKqJ,CAAL,CAAN;AACAtJ,UAAEC,CAAF,EAAKqJ,CAAL,IAAUtJ,EAAEC,CAAF,EAAKoQ,CAAL,CAAV;AACArQ,UAAEC,CAAF,EAAKoQ,CAAL,IAAU1I,GAAV;AACD;AACF;AACF;AACD;AACA;AACA;AACA;AACA,MAAMwL,cAAc,CAAClK,KAAK,CAAN,KAAYA,IAAI,CAAhB,CAApB;AACA,OAAKK,IAAI,CAAT,EAAYA,IAAIL,CAAhB,EAAmBK,GAAnB,EAAwB;AACtB,SAAKgJ,SAAS,CAAT,EAAYrS,IAAI,CAArB,EAAwBA,IAAIgJ,CAA5B,EAA+BhJ,GAA/B,EAAoC;AAClC,UAAID,EAAEC,CAAF,EAAKqJ,CAAL,KAAW,GAAf,EAAoB;AAClBgJ;AACD;AACF;AACD;AACA,QAAIA,SAASa,WAAb,EAA0B;AACxB,WAAKlT,IAAI,CAAT,EAAYA,IAAIgJ,CAAhB,EAAmBhJ,GAAnB,EAAwB;AACtBD,UAAEC,CAAF,EAAKqJ,CAAL,KAAW,CAAC,GAAZ;AACD;AACF;AACF;AACD,SAAO,CAAP;AACD;;AAED,SAAS8J,qBAAT,CAA+BvF,OAA/B,EAAwCiD,MAAxC,EAAgD;AAC9C,MAAMnJ,MAAM,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAf,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAA7B,EAA2C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAA3C,CAAZ;;AAEA;AACAA,MAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAA5C;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAhB,GAAgCA,QAAQ,CAAR,EAAW,CAAX,CAA5C;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAY,CAACkG,QAAQ,CAAR,EAAW,CAAX,CAAD,GAAiBA,QAAQ,CAAR,EAAW,CAAX,CAAjB,GAAiCA,QAAQ,CAAR,EAAW,CAAX,CAA7C;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAY,CAACkG,QAAQ,CAAR,EAAW,CAAX,CAAD,GAAiBA,QAAQ,CAAR,EAAW,CAAX,CAAjB,GAAiCA,QAAQ,CAAR,EAAW,CAAX,CAA7C;;AAEA;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;;AAEAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;AACAlG,MAAI,CAAJ,EAAO,CAAP,IAAYA,IAAI,CAAJ,EAAO,CAAP,IAAYkG,QAAQ,CAAR,EAAW,CAAX,IAAgBA,QAAQ,CAAR,EAAW,CAAX,CAAxC;;AAEA,MAAMwF,eAAe,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAf,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAA7B,EAA2C,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAA3C,CAArB;AACA,MAAMC,cAAc,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAApB;;AAEA;AACA;AACA,MAAMC,QAAQ,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAd;AACA,MAAMC,mBAAmB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAzB;AACA,OAAK,IAAIvT,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1BsT,UAAMtT,CAAN,IAAW0H,IAAI1H,CAAJ,CAAX;AACAuT,qBAAiBvT,CAAjB,IAAsBoT,aAAapT,CAAb,CAAtB;AACD;AACDiS,UAAQqB,KAAR,EAAe,CAAf,EAAkBD,WAAlB,EAA+BE,gBAA/B;;AAEA;AACA1C,SAAO,CAAP,IAAYuC,aAAa,CAAb,EAAgB,CAAhB,CAAZ;AACAvC,SAAO,CAAP,IAAYuC,aAAa,CAAb,EAAgB,CAAhB,CAAZ;AACAvC,SAAO,CAAP,IAAYuC,aAAa,CAAb,EAAgB,CAAhB,CAAZ;AACAvC,SAAO,CAAP,IAAYuC,aAAa,CAAb,EAAgB,CAAhB,CAAZ;AACD;;AAED,SAASI,kBAAT,CAA4BC,MAA5B,EAAoCC,MAApC,EAA4CC,QAA5C,EAAsD;AACpD,MAAM7C,KAAK2C,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAM3C,KAAK0C,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAM1C,KAAKyC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMzC,KAAKwC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;;AAEA,MAAME,KAAKH,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMxC,KAAKuC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMrC,KAAKoC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMpC,KAAKmC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;;AAEA,MAAMG,KAAKJ,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMI,KAAKL,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMvC,KAAKsC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMnC,KAAKkC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;;AAEA,MAAMK,KAAKN,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMM,KAAKP,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMO,KAAKR,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;AACA,MAAMtC,KAAKqC,OAAO,CAAP,IAAYC,OAAO,CAAP,CAAvB;;AAEAC,WAAS,CAAT,IAAc7C,KAAKI,EAAL,GAAUC,EAAV,GAAeC,EAA7B;AACAuC,WAAS,CAAT,IAAc5C,KAAK6C,EAAL,GAAUrC,EAAV,GAAe0C,EAA7B;AACAN,WAAS,CAAT,IAAc3C,KAAKM,EAAL,GAAUuC,EAAV,GAAeG,EAA7B;AACAL,WAAS,CAAT,IAAc1C,KAAKI,EAAL,GAAUyC,EAAV,GAAeC,EAA7B;AACD;;AAED,SAASG,gBAAT,CAA0BtE,KAA1B,EAAiClF,OAAjC,EAA0C;AACxC;AACA,OAAK,IAAI1K,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B0K,YAAQ,CAAR,EAAW1K,CAAX,IAAgB4P,MAAM,CAAN,EAAS5P,CAAT,CAAhB;AACA0K,YAAQ,CAAR,EAAW1K,CAAX,IAAgB4P,MAAM,CAAN,EAAS5P,CAAT,CAAhB;AACA0K,YAAQ,CAAR,EAAW1K,CAAX,IAAgB4P,MAAM,CAAN,EAAS5P,CAAT,CAAhB;AACD;;AAED;AACA,MAAMsM,QAAQ3E,YAAY,CAAZ,CAAd;AACA,MAAM1L,QAAQ0L,YAAY,CAAZ,CAAd;AACA,MAAIoG,gBAAJ;;AAEA;AACA,OAAK,IAAI/N,KAAI,CAAb,EAAgBA,KAAI,CAApB,EAAuBA,IAAvB,EAA4B;AAC1B,QAAMmU,MAAKtM,KAAKmD,GAAL,CAASN,QAAQ1K,EAAR,EAAW,CAAX,CAAT,CAAX;AACA,QAAMwL,MAAK3D,KAAKmD,GAAL,CAASN,QAAQ1K,EAAR,EAAW,CAAX,CAAT,CAAX;AACA,QAAMoU,MAAKvM,KAAKmD,GAAL,CAASN,QAAQ1K,EAAR,EAAW,CAAX,CAAT,CAAX;AACA+N,cAAUvC,MAAK2I,GAAL,GAAU3I,GAAV,GAAe2I,GAAzB;AACApG,cAAUqG,MAAKrG,OAAL,GAAeqG,GAAf,GAAoBrG,OAA9B;AACAzB,UAAMtM,EAAN,IAAW,CAAX;AACA,QAAI+N,YAAY,CAAhB,EAAmB;AACjBzB,YAAMtM,EAAN,KAAY+N,OAAZ;AACD;AACF;;AAED;AACA,MAAMoG,KAAKtM,KAAKmD,GAAL,CAASN,QAAQ,CAAR,EAAW,CAAX,CAAT,IAA0B4B,MAAM,CAAN,CAArC;AACA,MAAMd,KAAK3D,KAAKmD,GAAL,CAASN,QAAQ,CAAR,EAAW,CAAX,CAAT,IAA0B4B,MAAM,CAAN,CAArC;AACA,MAAM8H,KAAKvM,KAAKmD,GAAL,CAASN,QAAQ,CAAR,EAAW,CAAX,CAAT,IAA0B4B,MAAM,CAAN,CAArC;AACArQ,QAAM,CAAN,IAAW,CAAX;AACA8R,YAAUoG,EAAV;AACA,MAAI3I,MAAMuC,OAAV,EAAmB;AACjBA,cAAUvC,EAAV;AACAvP,UAAM,CAAN,IAAW,CAAX;AACD;AACD,MAAImY,MAAMrG,OAAV,EAAmB;AACjB9R,UAAM,CAAN,IAAW,CAAX;AACD;AACD,MAAIA,MAAM,CAAN,MAAa,CAAjB,EAAoB;AAClBsL,oBAAgBmD,QAAQzO,MAAM,CAAN,CAAR,CAAhB,EAAmCyO,QAAQ,CAAR,CAAnC;AACA4B,UAAMrQ,MAAM,CAAN,CAAN,IAAkBqQ,MAAM,CAAN,CAAlB;AACD;;AAED;AACA,MAAMb,KAAK5D,KAAKmD,GAAL,CAASN,QAAQ,CAAR,EAAW,CAAX,CAAT,IAA0B4B,MAAM,CAAN,CAArC;AACA,MAAM+H,KAAKxM,KAAKmD,GAAL,CAASN,QAAQ,CAAR,EAAW,CAAX,CAAT,IAA0B4B,MAAM,CAAN,CAArC;AACArQ,QAAM,CAAN,IAAW,CAAX;AACA8R,YAAUtC,EAAV;AACA,MAAI4I,MAAMtG,OAAV,EAAmB;AACjB9R,UAAM,CAAN,IAAW,CAAX;AACAsL,oBAAgBmD,QAAQ,CAAR,CAAhB,EAA4BA,QAAQ,CAAR,CAA5B;AACD;;AAED;AACAzO,QAAM,CAAN,IAAW,CAAX;;AAEA;AACA;AACA;AACA,MAAIqY,OAAO,CAAX;AACA,MAAI3D,eAAejG,OAAf,IAA0B,CAA9B,EAAiC;AAC/B4J,WAAO,CAAP;AACA,SAAK,IAAItU,MAAI,CAAb,EAAgBA,MAAI,CAApB,EAAuBA,KAAvB,EAA4B;AAC1B0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACA0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACA0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACD;AACF;;AAED;AACA;AACA;AACA;AACA,MAAMuU,OAAO5M,YAAY,CAAZ,CAAb;AACAwL,wBAAsBzI,OAAtB,EAA+B6J,IAA/B;AACA3D,wBAAsB2D,IAAtB,EAA4B7J,OAA5B;;AAEA;AACA,MAAI4J,IAAJ,EAAU;AACR,SAAK,IAAItU,MAAI,CAAb,EAAgBA,MAAI,CAApB,EAAuBA,KAAvB,EAA4B;AAC1B0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACA0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACA0K,cAAQ,CAAR,EAAW1K,GAAX,IAAgB,CAAC0K,QAAQ,CAAR,EAAW1K,GAAX,CAAjB;AACD;AACF;;AAED;AACA,MAAI/D,MAAM,CAAN,MAAa,CAAjB,EAAoB;AAClBsL,oBAAgBmD,QAAQzO,MAAM,CAAN,CAAR,CAAhB,EAAmCyO,QAAQ,CAAR,CAAnC;AACD;AACD,MAAIzO,MAAM,CAAN,MAAa,CAAjB,EAAoB;AAClBsL,oBAAgBmD,QAAQzO,MAAM,CAAN,CAAR,CAAhB,EAAmCyO,QAAQ,CAAR,CAAnC;AACD;AACF;;AAED,SAAS8J,cAAT,CAAwB5E,KAAxB,EAA+B6E,GAA/B,EAAoCC,KAApC,EAA2C;AACzC,MAAI1U,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAI+G,UAAJ;AACA,MAAItC,aAAJ;AACA,MAAIpG,YAAJ;AACA,MAAIiN,eAAJ;;AAEA;AACA,MAAMC,IAAI,CAACjN,YAAY,CAAZ,CAAD,EAAiBA,YAAY,CAAZ,CAAjB,EAAiCA,YAAY,CAAZ,CAAjC,CAAV;AACA,MAAMkN,QAAQlN,YAAY,CAAZ,CAAd;AACA,MAAMmN,QAAQnN,YAAY,CAAZ,CAAd;AACA,OAAK3H,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtB4U,MAAE5U,CAAF,EAAK,CAAL,IAAU4P,MAAM5P,CAAN,EAAS,CAAT,CAAV;AACA4U,MAAE5U,CAAF,EAAK,CAAL,IAAU4P,MAAM5P,CAAN,EAAS,CAAT,CAAV;AACA4U,MAAE5U,CAAF,EAAK,CAAL,IAAU4P,MAAM5P,CAAN,EAAS,CAAT,CAAV;AACA6U,UAAM7U,CAAN,IAAW4U,EAAE5U,CAAF,CAAX;AACA8U,UAAM9U,CAAN,IAAW0U,MAAM1U,CAAN,CAAX;AACD;;AAED;AACAiS,UAAQ4C,KAAR,EAAe,CAAf,EAAkBJ,GAAlB,EAAuBK,KAAvB;;AAEA;AACA,MAAIL,IAAI,CAAJ,MAAWA,IAAI,CAAJ,CAAX,IAAqBA,IAAI,CAAJ,MAAWA,IAAI,CAAJ,CAApC,EAA4C;AAC1C/D,gBAAYgE,KAAZ;AACA;AACD;;AAED;AACArE,eAAaqE,KAAb,EAAoBA,KAApB;;AAEA;AACA;AACA,OAAK1U,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtB;AACA,QAAIyU,IAAI,CAACzU,IAAI,CAAL,IAAU,CAAd,MAAqByU,IAAI,CAACzU,IAAI,CAAL,IAAU,CAAd,CAAzB,EAA2C;AACzC;AACA2U,eAAS9M,KAAKmD,GAAL,CAAS0J,MAAM1U,CAAN,EAAS,CAAT,CAAT,CAAT;AACA8N,aAAO,CAAP;AACA,WAAKzE,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtB,YAAIsL,UAAUjN,MAAMG,KAAKmD,GAAL,CAAS0J,MAAM1U,CAAN,EAASqJ,CAAT,CAAT,CAAhB,CAAJ,EAA4C;AAC1CsL,mBAASjN,GAAT;AACAoG,iBAAOzE,CAAP;AACD;AACF;AACD;AACA,UAAIyE,SAAS9N,CAAb,EAAgB;AACd0H,cAAM+M,IAAI3G,IAAJ,CAAN;AACA2G,YAAI3G,IAAJ,IAAY2G,IAAIzU,CAAJ,CAAZ;AACAyU,YAAIzU,CAAJ,IAAS0H,GAAT;AACAH,wBAAgBmN,MAAM1U,CAAN,CAAhB,EAA0B0U,MAAM5G,IAAN,CAA1B;AACD;AACD;AACA,UAAI4G,MAAM5G,IAAN,EAAYA,IAAZ,IAAoB,CAAxB,EAA2B;AACzB4G,cAAM5G,IAAN,EAAY,CAAZ,IAAiB,CAAC4G,MAAM5G,IAAN,EAAY,CAAZ,CAAlB;AACA4G,cAAM5G,IAAN,EAAY,CAAZ,IAAiB,CAAC4G,MAAM5G,IAAN,EAAY,CAAZ,CAAlB;AACA4G,cAAM5G,IAAN,EAAY,CAAZ,IAAiB,CAAC4G,MAAM5G,IAAN,EAAY,CAAZ,CAAlB;AACD;;AAED;AACAzE,UAAI,CAACyE,OAAO,CAAR,IAAa,CAAjB;AACAsC,UAAI,CAACtC,OAAO,CAAR,IAAa,CAAjB;;AAEA4G,YAAMrL,CAAN,EAAS,CAAT,IAAc,GAAd;AACAqL,YAAMrL,CAAN,EAAS,CAAT,IAAc,GAAd;AACAqL,YAAMrL,CAAN,EAAS,CAAT,IAAc,GAAd;AACAqL,YAAMrL,CAAN,EAASA,CAAT,IAAc,GAAd;AACAsB,YAAM+J,MAAM5G,IAAN,CAAN,EAAmB4G,MAAMrL,CAAN,CAAnB,EAA6BqL,MAAMtE,CAAN,CAA7B;AACAjF,gBAAUuJ,MAAMtE,CAAN,CAAV;AACAzF,YAAM+J,MAAMtE,CAAN,CAAN,EAAgBsE,MAAM5G,IAAN,CAAhB,EAA6B4G,MAAMrL,CAAN,CAA7B;;AAEA;AACAgH,mBAAaqE,KAAb,EAAoBA,KAApB;AACA;AACD;AACF;;AAED;AACA;;AAEA;AACA;AACAC,WAAS9M,KAAKmD,GAAL,CAAS0J,MAAM,CAAN,EAAS,CAAT,CAAT,CAAT;AACA5G,SAAO,CAAP;AACA,OAAK9N,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtB,QAAI2U,UAAUjN,MAAMG,KAAKmD,GAAL,CAAS0J,MAAM1U,CAAN,EAAS,CAAT,CAAT,CAAhB,CAAJ,EAA4C;AAC1C2U,eAASjN,GAAT;AACAoG,aAAO9N,CAAP;AACD;AACF;AACD;AACA,MAAI8N,SAAS,CAAb,EAAgB;AACdpG,UAAM+M,IAAI3G,IAAJ,CAAN;AACA2G,QAAI3G,IAAJ,IAAY2G,IAAI,CAAJ,CAAZ;AACAA,QAAI,CAAJ,IAAS/M,GAAT;AACAH,oBAAgBmN,MAAM5G,IAAN,CAAhB,EAA6B4G,MAAM,CAAN,CAA7B;AACD;AACD;AACA,MAAI7M,KAAKmD,GAAL,CAAS0J,MAAM,CAAN,EAAS,CAAT,CAAT,IAAwB7M,KAAKmD,GAAL,CAAS0J,MAAM,CAAN,EAAS,CAAT,CAAT,CAA5B,EAAmD;AACjDhN,UAAM+M,IAAI,CAAJ,CAAN;AACAA,QAAI,CAAJ,IAASA,IAAI,CAAJ,CAAT;AACAA,QAAI,CAAJ,IAAS/M,GAAT;AACAH,oBAAgBmN,MAAM,CAAN,CAAhB,EAA0BA,MAAM,CAAN,CAA1B;AACD;;AAED;AACA,OAAK1U,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtB,QAAI0U,MAAM1U,CAAN,EAASA,CAAT,IAAc,CAAlB,EAAqB;AACnB0U,YAAM1U,CAAN,EAAS,CAAT,IAAc,CAAC0U,MAAM1U,CAAN,EAAS,CAAT,CAAf;AACA0U,YAAM1U,CAAN,EAAS,CAAT,IAAc,CAAC0U,MAAM1U,CAAN,EAAS,CAAT,CAAf;AACA0U,YAAM1U,CAAN,EAAS,CAAT,IAAc,CAAC0U,MAAM1U,CAAN,EAAS,CAAT,CAAf;AACD;AACF;AACD;AACA,MAAI2Q,eAAe+D,KAAf,IAAwB,CAA5B,EAA+B;AAC7BA,UAAM,CAAN,EAAS,CAAT,IAAc,CAACA,MAAM,CAAN,EAAS,CAAT,CAAf;AACAA,UAAM,CAAN,EAAS,CAAT,IAAc,CAACA,MAAM,CAAN,EAAS,CAAT,CAAf;AACAA,UAAM,CAAN,EAAS,CAAT,IAAc,CAACA,MAAM,CAAN,EAAS,CAAT,CAAf;AACD;;AAED;AACArE,eAAaqE,KAAb,EAAoBA,KAApB;AACD;;AAED,SAASK,6BAAT,CAAuCnF,KAAvC,EAA8CoF,KAA9C,EAAqDP,GAArD,EAA0DQ,MAA1D,EAAkE;AAChE,MAAIjV,UAAJ;AACA,MAAMkV,IAAI,CAACvN,YAAY,CAAZ,CAAD,EAAiBA,YAAY,CAAZ,CAAjB,EAAiCA,YAAY,CAAZ,CAAjC,CAAV;;AAEA;AACA,OAAK3H,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtBkV,MAAE,CAAF,EAAKlV,CAAL,IAAU4P,MAAM,CAAN,EAAS5P,CAAT,CAAV;AACAkV,MAAE,CAAF,EAAKlV,CAAL,IAAU4P,MAAM,CAAN,EAAS5P,CAAT,CAAV;AACAkV,MAAE,CAAF,EAAKlV,CAAL,IAAU4P,MAAM,CAAN,EAAS5P,CAAT,CAAV;AACD;;AAED;AACA,MAAMmV,IAAIxE,eAAeuE,CAAf,CAAV;AACA,MAAIC,IAAI,CAAR,EAAW;AACT,SAAKnV,IAAI,CAAT,EAAYA,IAAI,CAAhB,EAAmBA,GAAnB,EAAwB;AACtBkV,QAAE,CAAF,EAAKlV,CAAL,IAAU,CAACkV,EAAE,CAAF,EAAKlV,CAAL,CAAX;AACAkV,QAAE,CAAF,EAAKlV,CAAL,IAAU,CAACkV,EAAE,CAAF,EAAKlV,CAAL,CAAX;AACAkV,QAAE,CAAF,EAAKlV,CAAL,IAAU,CAACkV,EAAE,CAAF,EAAKlV,CAAL,CAAX;AACD;AACF;;AAED;AACAkU,mBAAiBgB,CAAjB,EAAoBF,KAApB;AACA3E,eAAa6E,CAAb,EAAgBA,CAAhB;AACAvF,mBAAiBuF,CAAjB,EAAoBF,KAApB,EAA2BC,MAA3B;AACAT,iBAAeS,MAAf,EAAuBR,GAAvB,EAA4BQ,MAA5B;AACAtF,mBAAiBqF,KAAjB,EAAwBC,MAAxB,EAAgCD,KAAhC;AACA3E,eAAa4E,MAAb,EAAqBA,MAArB;;AAEA;AACA,MAAIE,IAAI,CAAR,EAAW;AACTV,QAAI,CAAJ,IAAS,CAACA,IAAI,CAAJ,CAAV;AACAA,QAAI,CAAJ,IAAS,CAACA,IAAI,CAAJ,CAAV;AACAA,QAAI,CAAJ,IAAS,CAACA,IAAI,CAAJ,CAAV;AACD;AACF;;AAED,SAASW,oBAAT,CAA8BC,CAA9B,EAAiCpZ,KAAjC,EAAwCuD,IAAxC,EAA8C;AAC5C,MAAIQ,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAI+G,UAAJ;AACA,MAAIrC,gBAAJ;AACA,MAAID,OAAO,CAAX;AACA,MAAI5C,YAAJ;AACA,MAAIoK,cAAJ;AACA,MAAIC,cAAJ;AACA,MAAMjJ,QAAQ3E,YAAYnI,IAAZ,CAAd;;AAEA;AACA;AACA;AACA,OAAKQ,IAAI,CAAT,EAAYA,IAAIR,IAAhB,EAAsBQ,GAAtB,EAA2B;AACzB,SAAK+N,UAAU,GAAV,EAAe1E,IAAI,CAAxB,EAA2BA,IAAI7J,IAA/B,EAAqC6J,GAArC,EAA0C;AACxC,UAAI,CAACkM,QAAQ1N,KAAKmD,GAAL,CAASqK,EAAErV,CAAF,EAAKqJ,CAAL,CAAT,CAAT,IAA8B0E,OAAlC,EAA2C;AACzCA,kBAAUwH,KAAV;AACD;AACF;;AAED,QAAIxH,YAAY,GAAhB,EAAqB;AACnB/V,sBAAgB,gCAAhB;AACA,aAAO,CAAP;AACD;AACDsU,UAAMtM,CAAN,IAAW,MAAM+N,OAAjB;AACD;AACD;AACA;AACA;AACA,OAAK1E,IAAI,CAAT,EAAYA,IAAI7J,IAAhB,EAAsB6J,GAAtB,EAA2B;AACzB,SAAKrJ,IAAI,CAAT,EAAYA,IAAIqJ,CAAhB,EAAmBrJ,GAAnB,EAAwB;AACtBkL,YAAMmK,EAAErV,CAAF,EAAKqJ,CAAL,CAAN;AACA,WAAK+G,IAAI,CAAT,EAAYA,IAAIpQ,CAAhB,EAAmBoQ,GAAnB,EAAwB;AACtBlF,eAAOmK,EAAErV,CAAF,EAAKoQ,CAAL,IAAUiF,EAAEjF,CAAF,EAAK/G,CAAL,CAAjB;AACD;AACDgM,QAAErV,CAAF,EAAKqJ,CAAL,IAAU6B,GAAV;AACD;AACD;AACA;AACA;AACA,SAAK6C,UAAU,GAAV,EAAe/N,IAAIqJ,CAAxB,EAA2BrJ,IAAIR,IAA/B,EAAqCQ,GAArC,EAA0C;AACxCkL,YAAMmK,EAAErV,CAAF,EAAKqJ,CAAL,CAAN;AACA,WAAK+G,IAAI,CAAT,EAAYA,IAAI/G,CAAhB,EAAmB+G,GAAnB,EAAwB;AACtBlF,eAAOmK,EAAErV,CAAF,EAAKoQ,CAAL,IAAUiF,EAAEjF,CAAF,EAAK/G,CAAL,CAAjB;AACD;AACDgM,QAAErV,CAAF,EAAKqJ,CAAL,IAAU6B,GAAV;;AAEA,UAAI,CAACoK,QAAQhJ,MAAMtM,CAAN,IAAW6H,KAAKmD,GAAL,CAASE,GAAT,CAApB,KAAsC6C,OAA1C,EAAmD;AACjDA,kBAAUuH,KAAV;AACAxH,eAAO9N,CAAP;AACD;AACF;AACD;AACA;AACA;AACA,QAAIqJ,MAAMyE,IAAV,EAAgB;AACd,WAAKsC,IAAI,CAAT,EAAYA,IAAI5Q,IAAhB,EAAsB4Q,GAAtB,EAA2B;AACzBkF,gBAAQD,EAAEvH,IAAF,EAAQsC,CAAR,CAAR;AACAiF,UAAEvH,IAAF,EAAQsC,CAAR,IAAaiF,EAAEhM,CAAF,EAAK+G,CAAL,CAAb;AACAiF,UAAEhM,CAAF,EAAK+G,CAAL,IAAUkF,KAAV;AACD;AACDhJ,YAAMwB,IAAN,IAAcxB,MAAMjD,CAAN,CAAd;AACD;AACD;AACA;AACA;AACApN,UAAMoN,CAAN,IAAWyE,IAAX;;AAEA,QAAIjG,KAAKmD,GAAL,CAASqK,EAAEhM,CAAF,EAAKA,CAAL,CAAT,KAAqBjC,gBAAzB,EAA2C;AACzCpP,sBAAgB,gCAAhB;AACA,aAAO,CAAP;AACD;;AAED,QAAIqR,MAAM7J,OAAO,CAAjB,EAAoB;AAClB8V,cAAQ,MAAMD,EAAEhM,CAAF,EAAKA,CAAL,CAAd;AACA,WAAKrJ,IAAIqJ,IAAI,CAAb,EAAgBrJ,IAAIR,IAApB,EAA0BQ,GAA1B,EAA+B;AAC7BqV,UAAErV,CAAF,EAAKqJ,CAAL,KAAWiM,KAAX;AACD;AACF;AACF;AACD,SAAO,CAAP;AACD;;AAED,SAASE,mBAAT,CAA6BH,CAA7B,EAAgCpZ,KAAhC,EAAuC4M,CAAvC,EAA0CrJ,IAA1C,EAAgD;AAC9C,MAAIQ,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAIyJ,WAAJ;AACA,MAAI2C,YAAJ;AACA,MAAIvK,YAAJ;AACA;AACA;AACA;AACA;AACA,OAAK4H,KAAK,CAAC,CAAN,EAAS9S,IAAI,CAAlB,EAAqBA,IAAIR,IAAzB,EAA+BQ,GAA/B,EAAoC;AAClCyV,UAAMxZ,MAAM+D,CAAN,CAAN;AACAkL,UAAMrC,EAAE4M,GAAF,CAAN;AACA5M,MAAE4M,GAAF,IAAS5M,EAAE7I,CAAF,CAAT;;AAEA,QAAI8S,MAAM,CAAV,EAAa;AACX,WAAKzJ,IAAIyJ,EAAT,EAAazJ,KAAKrJ,IAAI,CAAtB,EAAyBqJ,GAAzB,EAA8B;AAC5B6B,eAAOmK,EAAErV,CAAF,EAAKqJ,CAAL,IAAUR,EAAEQ,CAAF,CAAjB;AACD;AACF,KAJD,MAIO,IAAI6B,QAAQ,GAAZ,EAAiB;AACtB4H,WAAK9S,CAAL;AACD;;AAED6I,MAAE7I,CAAF,IAAOkL,GAAP;AACD;AACD;AACA;AACA;AACA,OAAKlL,IAAIR,OAAO,CAAhB,EAAmBQ,KAAK,CAAxB,EAA2BA,GAA3B,EAAgC;AAC9BkL,UAAMrC,EAAE7I,CAAF,CAAN;AACA,SAAKqJ,IAAIrJ,IAAI,CAAb,EAAgBqJ,IAAI7J,IAApB,EAA0B6J,GAA1B,EAA+B;AAC7B6B,aAAOmK,EAAErV,CAAF,EAAKqJ,CAAL,IAAUR,EAAEQ,CAAF,CAAjB;AACD;AACDR,MAAE7I,CAAF,IAAOkL,MAAMmK,EAAErV,CAAF,EAAKA,CAAL,CAAb;AACD;AACF;;AAED,SAAS0V,iBAAT,CAA2BL,CAA3B,EAA8BxM,CAA9B,EAAiCrJ,IAAjC,EAAuC;AACrC;AACA,MAAIA,SAAS,CAAb,EAAgB;AACd,QAAMgL,IAAI7C,YAAY,CAAZ,CAAV;AACA,QAAM2H,MAAM7B,eAAe4H,EAAE,CAAF,EAAK,CAAL,CAAf,EAAwBA,EAAE,CAAF,EAAK,CAAL,CAAxB,EAAiCA,EAAE,CAAF,EAAK,CAAL,CAAjC,EAA0CA,EAAE,CAAF,EAAK,CAAL,CAA1C,CAAZ;;AAEA,QAAI/F,QAAQ,GAAZ,EAAiB;AACf;AACA,aAAO,CAAP;AACD;;AAED9E,MAAE,CAAF,IAAO,CAAC6K,EAAE,CAAF,EAAK,CAAL,IAAUxM,EAAE,CAAF,CAAV,GAAiBwM,EAAE,CAAF,EAAK,CAAL,IAAUxM,EAAE,CAAF,CAA5B,IAAoCyG,GAA3C;AACA9E,MAAE,CAAF,IAAO,CAAC,EAAE6K,EAAE,CAAF,EAAK,CAAL,IAAUxM,EAAE,CAAF,CAAZ,IAAoBwM,EAAE,CAAF,EAAK,CAAL,IAAUxM,EAAE,CAAF,CAA/B,IAAuCyG,GAA9C;;AAEAzG,MAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP;AACA3B,MAAE,CAAF,IAAO2B,EAAE,CAAF,CAAP;AACA,WAAO,CAAP;AACD,GAfD,MAeO,IAAIhL,SAAS,CAAb,EAAgB;AACrB,QAAI6V,EAAE,CAAF,EAAK,CAAL,MAAY,GAAhB,EAAqB;AACnB;AACA,aAAO,CAAP;AACD;;AAEDxM,MAAE,CAAF,KAAQwM,EAAE,CAAF,EAAK,CAAL,CAAR;AACA,WAAO,CAAP;AACD;;AAED;AACA;AACA;;AAEA;AACA,MAAMpZ,QAAQ0L,YAAYnI,IAAZ,CAAd;;AAEA;AACA,MAAI4V,qBAAqBC,CAArB,EAAwBpZ,KAAxB,EAA+BuD,IAA/B,MAAyC,CAA7C,EAAgD;AAC9C,WAAO,CAAP;AACD;AACDgW,sBAAoBH,CAApB,EAAuBpZ,KAAvB,EAA8B4M,CAA9B,EAAiCrJ,IAAjC;;AAEA,SAAO,CAAP;AACD;;AAED,SAASmW,YAAT,CAAsBN,CAAtB,EAAyBO,EAAzB,EAA6BpW,IAA7B,EAAgE;AAAA,MAA7BvD,KAA6B,uEAArB,IAAqB;AAAA,MAAf4Z,MAAe,uEAAN,IAAM;;AAC9D,MAAMC,WAAW7Z,SAAS0L,YAAYnI,IAAZ,CAA1B;AACA,MAAMuW,WAAWF,UAAUlO,YAAYnI,IAAZ,CAA3B;;AAEA;AACA;AACA;AACA,MAAI4V,qBAAqBC,CAArB,EAAwBS,QAAxB,EAAkCtW,IAAlC,EAAwCuW,QAAxC,MAAsD,CAA1D,EAA6D;AAC3D,WAAO,CAAP;AACD;;AAED,OAAK,IAAI1M,IAAI,CAAb,EAAgBA,IAAI7J,IAApB,EAA0B6J,GAA1B,EAA+B;AAC7B,SAAK,IAAIrJ,IAAI,CAAb,EAAgBA,IAAIR,IAApB,EAA0BQ,GAA1B,EAA+B;AAC7B+V,eAAS/V,CAAT,IAAc,GAAd;AACD;AACD+V,aAAS1M,CAAT,IAAc,GAAd;;AAEAmM,wBAAoBH,CAApB,EAAuBS,QAAvB,EAAiCC,QAAjC,EAA2CvW,IAA3C;;AAEA,SAAK,IAAIQ,MAAI,CAAb,EAAgBA,MAAIR,IAApB,EAA0BQ,KAA1B,EAA+B;AAC7B4V,SAAG5V,GAAH,EAAMqJ,CAAN,IAAW0M,SAAS/V,GAAT,CAAX;AACD;AACF;;AAED,SAAO,CAAP;AACD;;AAED,SAASgW,uBAAT,CAAiCX,CAAjC,EAAoC7V,IAApC,EAA0C;AACxC,MAAIkK,WAAW,CAAC7N,OAAOoa,SAAvB;AACA,MAAItM,WAAW,CAAC9N,OAAOoa,SAAvB;;AAEA;AACA,OAAK,IAAIjW,IAAI,CAAb,EAAgBA,IAAIR,IAApB,EAA0BQ,GAA1B,EAA+B;AAC7B,SAAK,IAAIqJ,IAAIrJ,CAAb,EAAgBqJ,IAAI7J,IAApB,EAA0B6J,GAA1B,EAA+B;AAC7B,UAAIxB,KAAKmD,GAAL,CAASqK,EAAErV,CAAF,EAAKqJ,CAAL,CAAT,IAAoBd,GAAxB,EAA6B;AAC3BoB,mBAAW9B,KAAKmD,GAAL,CAASqK,EAAErV,CAAF,EAAKqJ,CAAL,CAAT,CAAX;AACD;AACF;AACF;;AAED;AACA,OAAK,IAAIrJ,MAAI,CAAb,EAAgBA,MAAIR,IAApB,EAA0BQ,KAA1B,EAA+B;AAC7B,QAAI6H,KAAKmD,GAAL,CAASqK,EAAErV,GAAF,EAAKA,GAAL,CAAT,IAAoBsI,GAAxB,EAA6B;AAC3BoB,iBAAW7B,KAAKmD,GAAL,CAASqK,EAAErV,GAAF,EAAKA,GAAL,CAAT,CAAX;AACD;AACF;;AAED,MAAI0J,aAAa,GAAjB,EAAsB;AACpB,WAAO7N,OAAOoa,SAAd;AACD;AACD,SAAOtM,WAAWD,QAAlB;AACD;;AAED,SAASwM,MAAT,CAAgBtG,KAAhB,EAAuBsC,CAAvB,EAA0BnS,CAA1B,EAA6B;AAC3B,SAAOkS,QAAQrC,KAAR,EAAe,CAAf,EAAkBsC,CAAlB,EAAqBnS,CAArB,CAAP;AACD;;AAED,SAASoW,4BAAT,CAAsCC,eAAtC,EAAuDC,EAAvD,EAA2DC,MAA3D,EAAmE9U,EAAnE,EAAuE;AACrE;AACA,MAAI4U,kBAAkBE,MAAtB,EAA8B;AAC5Bte,oBAAgB,kDAAhB;AACA,WAAO,CAAP;AACD;;AAED,MAAIgI,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAI+G,UAAJ;;AAEA;AACA;AACA,MAAMmG,MAAM5O,YAAY2O,MAAZ,CAAZ,CAbqE,CAapC;AACjC;AACA,MAAME,YAAY7O,YAAY2O,MAAZ,CAAlB;AACA,MAAMG,YAAY9O,YAAY2O,MAAZ,CAAlB;;AAEA;AACA,OAAKtW,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3ByW,cAAUzW,CAAV,IAAe2H,YAAY2O,MAAZ,CAAf;AACAC,QAAIvW,CAAJ,IAAS2H,YAAY2O,MAAZ,CAAT;AACA,SAAKjN,IAAI,CAAT,EAAYA,IAAIiN,MAAhB,EAAwBjN,GAAxB,EAA6B;AAC3BkN,UAAIvW,CAAJ,EAAOqJ,CAAP,IAAY,GAAZ;AACD;AACF;;AAED;AACA,OAAK+G,IAAI,CAAT,EAAYA,IAAIgG,eAAhB,EAAiChG,GAAjC,EAAsC;AACpC,SAAKpQ,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3B,WAAKqJ,IAAIrJ,CAAT,EAAYqJ,IAAIiN,MAAhB,EAAwBjN,GAAxB,EAA6B;AAC3BkN,YAAIvW,CAAJ,EAAOqJ,CAAP,KAAagN,GAAGjG,CAAH,EAAMpQ,CAAN,IAAWqW,GAAGjG,CAAH,EAAM/G,CAAN,CAAxB;AACD;AACF;AACF;;AAED;AACA,OAAKrJ,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3B,SAAKqJ,IAAI,CAAT,EAAYA,IAAIrJ,CAAhB,EAAmBqJ,GAAnB,EAAwB;AACtBkN,UAAIvW,CAAJ,EAAOqJ,CAAP,IAAYkN,IAAIlN,CAAJ,EAAOrJ,CAAP,CAAZ;AACD;AACF;;AAED;AACAiS,UAAQsE,GAAR,EAAaD,MAAb,EAAqBE,SAArB,EAAgCC,SAAhC;;AAEA;AACA;AACA,OAAKzW,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3BwB,OAAGxB,CAAH,EAAM,CAAN,IAAWyW,UAAUzW,CAAV,EAAasW,SAAS,CAAtB,CAAX;AACD;;AAED,SAAO,CAAP;AACD;;AAED,SAASI,iBAAT,CACEN,eADF,EAEEC,EAFF,EAGEC,MAHF,EAIEK,EAJF,EAKEC,MALF,EAMEpV,EANF,EAQE;AAAA,MADAqV,gBACA,uEADmB,IACnB;;AACA;AACA,MAAIT,kBAAkBE,MAAlB,IAA4BF,kBAAkBQ,MAAlD,EAA0D;AACxD5e,oBAAgB,kDAAhB;AACA,WAAO,CAAP;AACD;;AAED,MAAM8e,eAAenP,YAAYiP,MAAZ,CAArB;AACA,MAAIG,iBAAiB,CAArB;AACA,MAAIC,YAAJ;AACA,MAAIC,UAAU,CAAd;AACA,MAAIjX,UAAJ;AACA,MAAIqJ,UAAJ;AACA,MAAI+G,UAAJ;AACA,MAAI8G,kBAAkB,CAAtB;;AAEA;AACA,MAAIL,gBAAJ,EAAsB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAKxN,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3ByN,mBAAazN,CAAb,IAAkB,CAAlB;AACD;AACD,SAAKrJ,IAAI,CAAT,EAAYA,IAAIoW,eAAhB,EAAiCpW,GAAjC,EAAsC;AACpC,WAAKqJ,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B,YAAIxB,KAAKmD,GAAL,CAAS2L,GAAG3W,CAAH,EAAMqJ,CAAN,CAAT,IAAqBjC,gBAAzB,EAA2C;AACzC2P,2BAAiB,CAAjB;AACAD,uBAAazN,CAAb,IAAkB,CAAlB;AACD;AACF;AACF;;AAED;AACA,QAAI0N,kBAAkBH,WAAW,CAAjC,EAAoC;AAClC5e,sBACE,2EADF;AAGA,aAAOme,6BAA6BC,eAA7B,EAA8CC,EAA9C,EAAkDC,MAAlD,EAA0D9U,EAA1D,CAAP;AACD;;AAED;AACA;AACA;AACA,QAAIuV,cAAJ,EAAoB;AAClBG,wBAAkB,CAAlB;AACD,KAFD,MAEO;AACL,WAAK7N,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B,YAAIyN,aAAazN,CAAb,CAAJ,EAAqB;AACnB6N,4BAAkB,CAAlB;AACD;AACF;AACF;AACF;;AAED;AACA,MAAIA,eAAJ,EAAqB;AACnB;AACAF,UAAMrP,YAAY2O,MAAZ,CAAN;AACA,SAAKjN,IAAI,CAAT,EAAYA,IAAIiN,MAAhB,EAAwBjN,GAAxB,EAA6B;AAC3B;AACA;AACA2N,UAAI3N,CAAJ,IAAS,CAAC,CAAD,CAAT;AACD;;AAED;AACA4N,cAAUd,6BAA6BC,eAA7B,EAA8CC,EAA9C,EAAkDC,MAAlD,EAA0DU,GAA1D,CAAV;AACD;;AAED;AACA,MAAMT,MAAM5O,YAAY2O,MAAZ,CAAZ,CA3EA,CA2EiC;AACjC,MAAMa,OAAOxP,YAAY2O,MAAZ,CAAb,CA5EA,CA4EkC;AAClC,MAAMc,MAAMzP,YAAY2O,MAAZ,CAAZ,CA7EA,CA6EiC;AACjC,OAAKtW,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3BuW,QAAIvW,CAAJ,IAAS2H,YAAY2O,MAAZ,CAAT;AACAa,SAAKnX,CAAL,IAAU2H,YAAY2O,MAAZ,CAAV;;AAEA,SAAKjN,IAAI,CAAT,EAAYA,IAAIiN,MAAhB,EAAwBjN,GAAxB,EAA6B;AAC3BkN,UAAIvW,CAAJ,EAAOqJ,CAAP,IAAY,GAAZ;AACA8N,WAAKnX,CAAL,EAAQqJ,CAAR,IAAa,GAAb;AACD;;AAED+N,QAAIpX,CAAJ,IAAS2H,YAAYiP,MAAZ,CAAT;AACA,SAAKvN,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B+N,UAAIpX,CAAJ,EAAOqJ,CAAP,IAAY,GAAZ;AACD;AACF;;AAED;AACA,OAAK+G,IAAI,CAAT,EAAYA,IAAIgG,eAAhB,EAAiChG,GAAjC,EAAsC;AACpC,SAAKpQ,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3B;AACA,WAAKqJ,IAAIrJ,CAAT,EAAYqJ,IAAIiN,MAAhB,EAAwBjN,GAAxB,EAA6B;AAC3BkN,YAAIvW,CAAJ,EAAOqJ,CAAP,KAAagN,GAAGjG,CAAH,EAAMpQ,CAAN,IAAWqW,GAAGjG,CAAH,EAAM/G,CAAN,CAAxB;AACD;;AAED;AACA,WAAKA,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B+N,YAAIpX,CAAJ,EAAOqJ,CAAP,KAAagN,GAAGjG,CAAH,EAAMpQ,CAAN,IAAW2W,GAAGvG,CAAH,EAAM/G,CAAN,CAAxB;AACD;AACF;AACF;;AAED;AACA,OAAKrJ,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3B,SAAKqJ,IAAI,CAAT,EAAYA,IAAIrJ,CAAhB,EAAmBqJ,GAAnB,EAAwB;AACtBkN,UAAIvW,CAAJ,EAAOqJ,CAAP,IAAYkN,IAAIlN,CAAJ,EAAOrJ,CAAP,CAAZ;AACD;AACF;;AAED,MAAMqX,cAAc1B,aAAaY,GAAb,EAAkBY,IAAlB,EAAwBb,MAAxB,CAApB;;AAEA;AACA,MAAIe,WAAJ,EAAiB;AACf,SAAKrX,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3B,WAAKqJ,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B7H,WAAGxB,CAAH,EAAMqJ,CAAN,IAAW,GAAX;AACA,aAAK+G,IAAI,CAAT,EAAYA,IAAIkG,MAAhB,EAAwBlG,GAAxB,EAA6B;AAC3B5O,aAAGxB,CAAH,EAAMqJ,CAAN,KAAY8N,KAAKnX,CAAL,EAAQoQ,CAAR,IAAagH,IAAIhH,CAAJ,EAAO/G,CAAP,CAAzB;AACD;AACF;AACF;AACF;;AAED;AACA;AACA,MAAI6N,eAAJ,EAAqB;AACnB,SAAK7N,IAAI,CAAT,EAAYA,IAAIuN,MAAhB,EAAwBvN,GAAxB,EAA6B;AAC3B,UAAIyN,aAAazN,CAAb,CAAJ,EAAqB;AACnB;AACA,aAAKrJ,IAAI,CAAT,EAAYA,IAAIsW,MAAhB,EAAwBtW,GAAxB,EAA6B;AAC3BwB,aAAGxB,CAAH,EAAMqJ,CAAN,IAAW2N,IAAIhX,CAAJ,EAAO,CAAP,CAAX;AACD;AACF;AACF;AACF;;AAED,MAAIkX,eAAJ,EAAqB;AACnB,WAAOD,WAAWI,WAAlB;AACD;;AAED,SAAOA,WAAP;AACD;;AAED,SAASC,OAAT,CAAiBC,GAAjB,EAAsBC,GAAtB,EAA2B;AACzB,MAAI9E,UAAJ;AACA,MAAIhB,UAAJ;;AAFyB,4BAGP6F,GAHO;AAAA,MAGlBtO,CAHkB;AAAA,MAGf0J,CAHe;AAAA,MAGZ3I,CAHY;;AAIzB,MAAMyN,WAAW,MAAM,GAAvB;AACA,MAAMC,WAAW,MAAM,GAAvB;AACA,MAAMC,WAAW,MAAM,GAAvB;;AAEA,MAAIC,OAAO3O,CAAX;AACA,MAAI4O,OAAO5O,CAAX;;AAEA,MAAI0J,IAAIiF,IAAR,EAAc;AACZA,WAAOjF,CAAP;AACD,GAFD,MAEO,IAAIA,IAAIkF,IAAR,EAAc;AACnBA,WAAOlF,CAAP;AACD;AACD,MAAI3I,IAAI4N,IAAR,EAAc;AACZA,WAAO5N,CAAP;AACD,GAFD,MAEO,IAAIA,IAAI6N,IAAR,EAAc;AACnBA,WAAO7N,CAAP;AACD;AACD,MAAMjK,IAAI6X,IAAV;;AAEA,MAAI7X,IAAI,GAAR,EAAa;AACX2R,QAAI,CAACkG,OAAOC,IAAR,IAAgBD,IAApB;AACD,GAFD,MAEO;AACLlG,QAAI,GAAJ;AACD;AACD,MAAIA,IAAI,CAAR,EAAW;AACT,QAAIzI,MAAM2O,IAAV,EAAgB;AACdlF,UAAIgF,YAAY/E,IAAI3I,CAAhB,KAAsB4N,OAAOC,IAA7B,CAAJ;AACD,KAFD,MAEO,IAAIlF,MAAMiF,IAAV,EAAgB;AACrBlF,UAAI+E,WAAWC,YAAY1N,IAAIf,CAAhB,KAAsB2O,OAAOC,IAA7B,CAAf;AACD,KAFM,MAEA;AACLnF,UAAIiF,WAAWD,YAAYzO,IAAI0J,CAAhB,KAAsBiF,OAAOC,IAA7B,CAAf;AACD;AACD,QAAInF,IAAI,GAAR,EAAa;AACXA,WAAK,GAAL;AACD;AACF,GAXD,MAWO;AACLA,QAAI,GAAJ;AACD;;AAED;AACA8E,MAAI,CAAJ,IAAS9E,CAAT;AACA8E,MAAI,CAAJ,IAAS9F,CAAT;AACA8F,MAAI,CAAJ,IAASzX,CAAT;AACD;;AAED,SAAS+X,OAAT,CAAiBN,GAAjB,EAAsBD,GAAtB,EAA2B;AAAA,4BACPC,GADO;AAAA,MAClB9E,CADkB;AAAA,MACfhB,CADe;AAAA,MACZ3R,CADY;;AAEzB,MAAM0X,WAAW,MAAM,GAAvB;AACA,MAAMC,WAAW,MAAM,GAAvB;AACA,MAAMC,WAAW,MAAM,GAAvB;AACA,MAAMI,YAAY,MAAM,GAAxB;AACA,MAAI9O,UAAJ;AACA,MAAI0J,UAAJ;AACA,MAAI3I,UAAJ;;AAEA;AACA,MAAI0I,IAAIgF,QAAJ,IAAgBhF,KAAK+E,QAAzB,EAAmC;AACjC;AACA9E,QAAI,GAAJ;AACA1J,QAAI,CAACwO,WAAW/E,CAAZ,IAAiBgF,QAArB;AACA1N,QAAI,GAAJ;AACD,GALD,MAKO,IAAI0I,IAAI+E,QAAJ,IAAgB/E,KAAK,GAAzB,EAA8B;AACnC;AACAC,QAAI,GAAJ;AACA3I,QAAI,CAAC0I,IAAI+E,QAAL,IAAiBC,QAArB;AACAzO,QAAI,GAAJ;AACD,GALM,MAKA,IAAIyJ,IAAI,GAAJ,IAAWA,KAAKiF,QAApB,EAA8B;AACnC;AACA3N,QAAI,GAAJ;AACA2I,QAAI,CAACgF,WAAWjF,CAAZ,IAAiBgF,QAArB;AACAzO,QAAI,GAAJ;AACD,GALM,MAKA,IAAIyJ,IAAIiF,QAAJ,IAAgBjF,KAAKqF,SAAzB,EAAoC;AACzC;AACA/N,QAAI,GAAJ;AACAf,QAAI,CAACyJ,IAAIiF,QAAL,IAAiBD,QAArB;AACA/E,QAAI,GAAJ;AACD,GALM,MAKA,IAAID,IAAIqF,SAAJ,IAAiBrF,KAAK,GAA1B,EAA+B;AACpC;AACAzJ,QAAI,GAAJ;AACAe,QAAI,CAAC,MAAM0I,CAAP,IAAYgF,QAAhB;AACA/E,QAAI,GAAJ;AACD,GALM,MAKA;AACL;AACA1J,QAAI,GAAJ;AACA0J,QAAID,IAAIgF,QAAR;AACA1N,QAAI,GAAJ;AACD;;AAED;AACAf,MAAIyI,IAAIzI,CAAJ,IAAS,MAAMyI,CAAf,CAAJ;AACAiB,MAAIjB,IAAIiB,CAAJ,IAAS,MAAMjB,CAAf,CAAJ;AACA1H,MAAI0H,IAAI1H,CAAJ,IAAS,MAAM0H,CAAf,CAAJ;;AAEAzI,OAAKlJ,CAAL;AACA4S,OAAK5S,CAAL;AACAiK,OAAKjK,CAAL;;AAEA;AACAwX,MAAI,CAAJ,IAAStO,CAAT;AACAsO,MAAI,CAAJ,IAAS5E,CAAT;AACA4E,MAAI,CAAJ,IAASvN,CAAT;AACD;;AAED,SAASgO,OAAT,CAAiBC,GAAjB,EAAsBC,GAAtB,EAA2B;AACzB;AADyB,4BAEPD,GAFO;AAAA,MAElBE,CAFkB;AAAA,MAEfpO,CAFe;AAAA,MAEZC,CAFY;;AAGzB,MAAIoO,QAAQ,CAACD,IAAI,EAAL,IAAW,GAAvB;AACA,MAAIE,QAAQtO,IAAI,GAAJ,GAAUqO,KAAtB;AACA,MAAIE,QAAQF,QAAQpO,IAAI,GAAxB;;AAEA,MAAI,gBAAS,CAAT,IAAa,QAAjB,EAA2B;AACzBoO,SADyB,YACzBA,KADyB,EACf,CADe;AAE1B,GAFD,MAEO;AACLA,YAAQ,CAACA,QAAQ,OAAO,KAAhB,IAAyB,KAAjC;AACD;;AAED,MAAI,gBAAS,CAAT,IAAa,QAAjB,EAA2B;AACzBC,SADyB,YACzBA,KADyB,EACf,CADe;AAE1B,GAFD,MAEO;AACLA,YAAQ,CAACA,QAAQ,OAAO,KAAhB,IAAyB,KAAjC;AACD;;AAED,MAAI,gBAAS,CAAT,IAAa,QAAjB,EAA2B;AACzBC,SADyB,YACzBA,KADyB,EACf,CADe;AAE1B,GAFD,MAEO;AACLA,YAAQ,CAACA,QAAQ,OAAO,KAAhB,IAAyB,KAAjC;AACD;AACD,MAAMC,QAAQ,MAAd;AACA,MAAMC,QAAQ,GAAd;AACA,MAAMC,QAAQ,KAAd;AACAP,MAAI,CAAJ,IAASK,QAAQF,KAAjB,CA3ByB,CA2BD;AACxBH,MAAI,CAAJ,IAASM,QAAQJ,KAAjB,CA5ByB,CA4BD;AACxBF,MAAI,CAAJ,IAASO,QAAQH,KAAjB,CA7ByB,CA6BD;AACzB;;AAED,SAASI,OAAT,CAAiBR,GAAjB,EAAsBD,GAAtB,EAA2B;AAAA,4BACPC,GADO;AAAA,MAClBrP,CADkB;AAAA,MACf2B,CADe;AAAA,MACZc,CADY;;AAEzB,MAAMiN,QAAQ,MAAd;AACA,MAAMC,QAAQ,GAAd;AACA,MAAMC,QAAQ,KAAd;AACA,MAAIJ,QAAQxP,IAAI0P,KAAhB,CALyB,CAKF;AACvB,MAAIH,QAAQ5N,IAAIgO,KAAhB,CANyB,CAMF;AACvB,MAAIF,QAAQhN,IAAImN,KAAhB,CAPyB,CAOF;;AAEvB,MAAIJ,QAAQ,QAAZ;AAAsBA,SAAtB,YAAsBA,KAAtB,EAAgC,MAAM,GAAtC;AAAA,SACKA,QAAQ,QAAQA,KAAR,GAAgB,OAAO,KAA/B;AACL,MAAID,QAAQ,QAAZ;AAAsBA,SAAtB,YAAsBA,KAAtB,EAAgC,MAAM,GAAtC;AAAA,SACKA,QAAQ,QAAQA,KAAR,GAAgB,OAAO,KAA/B;AACL,MAAIE,QAAQ,QAAZ;AAAsBA,SAAtB,YAAsBA,KAAtB,EAAgC,MAAM,GAAtC;AAAA,SACKA,QAAQ,QAAQA,KAAR,GAAgB,OAAO,KAA/B;;AAELL,MAAI,CAAJ,IAAS,MAAMG,KAAN,GAAc,EAAvB;AACAH,MAAI,CAAJ,IAAS,OAAOI,QAAQD,KAAf,CAAT;AACAH,MAAI,CAAJ,IAAS,OAAOG,QAAQE,KAAf,CAAT;AACD;;AAED,SAASK,OAAT,CAAiBT,GAAjB,EAAsBX,GAAtB,EAA2B;AAAA,6BACPW,GADO;AAAA,MAClBrP,CADkB;AAAA,MACf2B,CADe;AAAA,MACZc,CADY;;AAEzB,MAAIrC,IAAIJ,IAAI,MAAJ,GAAa2B,IAAI,CAAC,MAAlB,GAA2Bc,IAAI,CAAC,MAAxC;AACA,MAAIqH,IAAI9J,IAAI,CAAC,MAAL,GAAc2B,IAAI,MAAlB,GAA2Bc,IAAI,MAAvC;AACA,MAAItB,IAAInB,IAAI,MAAJ,GAAa2B,IAAI,CAAC,KAAlB,GAA0Bc,IAAI,KAAtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAIrC,IAAI,SAAR,EAAmBA,IAAI,iBAAQA,CAAR,EAAc,IAAI,GAAlB,IAAyB,KAA7B,CAAnB,KACKA,KAAK,KAAL;AACL,MAAI0J,IAAI,SAAR,EAAmBA,IAAI,iBAAQA,CAAR,EAAc,IAAI,GAAlB,IAAyB,KAA7B,CAAnB,KACKA,KAAK,KAAL;AACL,MAAI3I,IAAI,SAAR,EAAmBA,IAAI,iBAAQA,CAAR,EAAc,IAAI,GAAlB,IAAyB,KAA7B,CAAnB,KACKA,KAAK,KAAL;;AAEL;AACA;AACA;AACA,MAAI2K,SAAS1L,CAAb;AACA,MAAI0L,SAAShC,CAAb,EAAgBgC,SAAShC,CAAT;AAChB,MAAIgC,SAAS3K,CAAb,EAAgB2K,SAAS3K,CAAT;AAChB,MAAI2K,SAAS,GAAb,EAAkB;AAChB1L,SAAK0L,MAAL;AACAhC,SAAKgC,MAAL;AACA3K,SAAK2K,MAAL;AACD;AACD,MAAI1L,IAAI,CAAR,EAAWA,IAAI,CAAJ;AACX,MAAI0J,IAAI,CAAR,EAAWA,IAAI,CAAJ;AACX,MAAI3I,IAAI,CAAR,EAAWA,IAAI,CAAJ;;AAEX;AACAuN,MAAI,CAAJ,IAAStO,CAAT;AACAsO,MAAI,CAAJ,IAAS5E,CAAT;AACA4E,MAAI,CAAJ,IAASvN,CAAT;AACD;;AAED,SAAS4O,OAAT,CAAiBrB,GAAjB,EAAsBW,GAAtB,EAA2B;AAAA,6BACTX,GADS;AAAA,MACpBtO,CADoB;AAAA,MACjB0J,CADiB;AAAA,MACd3I,CADc;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAIf,IAAI,OAAR,EAAiBA,aAAK,CAACA,IAAI,KAAL,IAAc,KAAnB,EAA6B,GAA7B,EAAjB,KACKA,KAAK,KAAL;AACL,MAAI0J,IAAI,OAAR,EAAiBA,aAAK,CAACA,IAAI,KAAL,IAAc,KAAnB,EAA6B,GAA7B,EAAjB,KACKA,KAAK,KAAL;AACL,MAAI3I,IAAI,OAAR,EAAiBA,aAAK,CAACA,IAAI,KAAL,IAAc,KAAnB,EAA6B,GAA7B,EAAjB,KACKA,KAAK,KAAL;;AAEL;AACAkO,MAAI,CAAJ,IAASjP,IAAI,MAAJ,GAAa0J,IAAI,MAAjB,GAA0B3I,IAAI,MAAvC;AACAkO,MAAI,CAAJ,IAASjP,IAAI,MAAJ,GAAa0J,IAAI,MAAjB,GAA0B3I,IAAI,MAAvC;AACAkO,MAAI,CAAJ,IAASjP,IAAI,MAAJ,GAAa0J,IAAI,MAAjB,GAA0B3I,IAAI,MAAvC;AACD;;AAED,SAAS6O,OAAT,CAAiBtB,GAAjB,EAAsBU,GAAtB,EAA2B;AACzB,MAAMC,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAZ;AACAU,UAAQrB,GAAR,EAAaW,GAAb;AACAQ,UAAQR,GAAR,EAAaD,GAAb;AACD;;AAED,SAASa,OAAT,CAAiBb,GAAjB,EAAsBV,GAAtB,EAA2B;AACzB,MAAMW,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAZ;AACAF,UAAQC,GAAR,EAAaC,GAAb;AACAS,UAAQT,GAAR,EAAaX,GAAb;AACD;;AAED,SAASwB,kBAAT,CAA4BC,MAA5B,EAAoC;AAClCA,SAAO,CAAP,IAAY,GAAZ;AACAA,SAAO,CAAP,IAAY,CAAC,GAAb;AACAA,SAAO,CAAP,IAAY,GAAZ;AACAA,SAAO,CAAP,IAAY,CAAC,GAAb;AACAA,SAAO,CAAP,IAAY,GAAZ;AACAA,SAAO,CAAP,IAAY,CAAC,GAAb;AACD;;AAED,SAASC,oBAAT,CAA8BD,MAA9B,EAAsC;AACpC,SAAO,EAAEA,OAAO,CAAP,IAAYA,OAAO,CAAP,CAAZ,GAAwB,GAA1B,CAAP;AACD;;AAED,SAASE,UAAT,CAAoB9d,KAApB,EAA2BsO,QAA3B,EAAqCC,QAArC,EAA+C;AAC7C,MAAIvO,QAAQsO,QAAZ,EAAsB;AACpB,WAAOA,QAAP;AACD;AACD,MAAItO,QAAQuO,QAAZ,EAAsB;AACpB,WAAOA,QAAP;AACD;AACD,SAAOvO,KAAP;AACD;;AAED,SAAS+d,sBAAT,CAAgC/d,KAAhC,EAAuCge,KAAvC,EAA8C;AAC5C,MAAI9V,SAAS,CAAb;AACA,MAAI8V,MAAM,CAAN,MAAaA,MAAM,CAAN,CAAjB,EAA2B;AACzB;AACA,QAAIhe,QAAQge,MAAM,CAAN,CAAZ,EAAsB;AACpB9V,eAAS8V,MAAM,CAAN,CAAT;AACD,KAFD,MAEO,IAAIhe,QAAQge,MAAM,CAAN,CAAZ,EAAsB;AAC3B9V,eAAS8V,MAAM,CAAN,CAAT;AACD,KAFM,MAEA;AACL9V,eAASlI,KAAT;AACD;AACD;AACAkI,aAAS,CAACA,SAAS8V,MAAM,CAAN,CAAV,KAAuBA,MAAM,CAAN,IAAWA,MAAM,CAAN,CAAlC,CAAT;AACD;;AAED,SAAO9V,MAAP;AACD;;AAED,IAAM+V,4BAA4BhS,eAAe,2BAAf,CAAlC;AACA,IAAMiS,yBAAyBjS,eAAe,wBAAf,CAA/B;;AAEA,SAASkS,yBAAT,CAAmCC,OAAnC,EAA4CC,OAA5C,EAAqD;AACnD,MAAI,CAACD,OAAD,IAAY,CAACC,OAAjB,EAA0B;AACxB,WAAO,CAAP;AACD;;AAED,OAAK,IAAIzZ,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,KAAK,CAA5B,EAA+B;AAC7B,QACEwZ,QAAQxZ,CAAR,IAAayZ,QAAQzZ,CAAR,CAAb,IACAwZ,QAAQxZ,CAAR,IAAayZ,QAAQzZ,IAAI,CAAZ,CADb,IAEAwZ,QAAQxZ,IAAI,CAAZ,IAAiByZ,QAAQzZ,CAAR,CAFjB,IAGAwZ,QAAQxZ,IAAI,CAAZ,IAAiByZ,QAAQzZ,IAAI,CAAZ,CAJnB,EAKE;AACA,aAAO,CAAP;AACD;AACF;;AAED,SAAO,CAAP;AACD;;AAED,SAAS0Z,yBAAT,CAAmCC,SAAnC,EAA8CC,SAA9C,EAAyDC,OAAzD,EAAkE;AAChE,MAAI,CAACF,SAAD,IAAc,CAACC,SAAnB,EAA8B;AAC5B,WAAO,CAAP;AACD;AACD,OAAK,IAAI5Z,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,KAAK,CAA5B,EAA+B;AAC7B,QACE2Z,UAAU3Z,CAAV,IAAe6Z,QAAQ7Z,IAAI,CAAZ,CAAf,GAAgC4Z,UAAU5Z,CAAV,CAAhC,IACA2Z,UAAU3Z,CAAV,IAAe6Z,QAAQ7Z,IAAI,CAAZ,CAAf,GAAgC4Z,UAAU5Z,IAAI,CAAd,CADhC,IAEA2Z,UAAU3Z,IAAI,CAAd,IAAmB6Z,QAAQ7Z,IAAI,CAAZ,CAAnB,GAAoC4Z,UAAU5Z,CAAV,CAFpC,IAGA2Z,UAAU3Z,IAAI,CAAd,IAAmB6Z,QAAQ7Z,IAAI,CAAZ,CAAnB,GAAoC4Z,UAAU5Z,IAAI,CAAd,CAJtC,EAKE;AACA,aAAO,CAAP;AACD;AACF;AACD,SAAO,CAAP;AACD;;AAED,SAAS8Z,mBAAT,CAA6BC,OAA7B,EAAsCC,QAAtC,EAAgDH,OAAhD,EAAyD;AACvD,MAAI,CAACE,OAAD,IAAY,CAACC,QAAb,IAAyB,CAACH,OAA9B,EAAuC;AACrC,WAAO,CAAP;AACD;AACD,OAAK,IAAI7Z,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuBA,GAAvB,EAA4B;AAC1B,QACE+Z,QAAQ/Z,CAAR,IAAa6Z,QAAQ7Z,CAAR,CAAb,GAA0Bga,SAAS,IAAIha,CAAb,CAA1B,IACA+Z,QAAQ/Z,CAAR,IAAa6Z,QAAQ7Z,CAAR,CAAb,GAA0Bga,SAAS,IAAIha,CAAJ,GAAQ,CAAjB,CAF5B,EAGE;AACA,aAAO,CAAP;AACD;AACF;AACD,SAAO,CAAP;AACD;;AAED,SAASia,iBAAT,CAA2BC,EAA3B,EAA+BC,EAA/B,EAAmCC,EAAnC,EAAuCC,MAAvC,EAA+C;AAC7C,MAAMC,MAAM3S,YAAY,CAAZ,CAAZ;AACA,MAAM4S,MAAM5S,YAAY,CAAZ,CAAZ;AACA,MAAM6S,MAAM7S,YAAY,CAAZ,CAAZ;AACA,MAAM8S,MAAM9S,YAAY,CAAZ,CAAZ;AACA,MAAM+S,MAAM/S,YAAY,CAAZ,CAAZ;AACA,MAAMgT,MAAMhT,YAAY,CAAZ,CAAZ;;AAEA,OAAK,IAAI3H,IAAI,CAAb,EAAgBA,IAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;AAC1Bsa,QAAIta,CAAJ,IAASka,GAAGla,CAAH,IAAQma,GAAGna,CAAH,CAAjB;AACAua,QAAIva,CAAJ,IAASma,GAAGna,CAAH,IAAQoa,GAAGpa,CAAH,CAAjB;AACAwa,QAAIxa,CAAJ,IAASoa,GAAGpa,CAAH,IAAQka,GAAGla,CAAH,CAAjB;AACAya,QAAIza,CAAJ,IAAS,CAACsa,IAAIta,CAAJ,CAAV;AACA0a,QAAI1a,CAAJ,IAAS,CAACua,IAAIva,CAAJ,CAAV;AACA2a,QAAI3a,CAAJ,IAAS,CAACwa,IAAIxa,CAAJ,CAAV;AACD;;AAED,MAAM4a,SAAS7P,KAAK0P,GAAL,CAAf;AACA,MAAMI,SAAS9P,KAAK2P,GAAL,CAAf;AACA,MAAMI,SAAS/P,KAAKyP,GAAL,CAAf;;AAEA,MAAMO,cAAcpT,YAAY,CAAZ,CAApB;AACAgD,QAAM2P,GAAN,EAAWC,GAAX,EAAgBQ,WAAhB;AACA,MAAMC,YAAYjQ,KAAKgQ,WAAL,CAAlB;;AAEA,MAAME,SAASL,SAASC,MAAT,GAAkBC,MAAlB,IAA4B,IAAIE,SAAhC,CAAf;;AAEA,MAAME,cAAc,IAAIF,SAAJ,GAAgBA,SAApC;AACA,MAAMG,QAAQN,SAASA,MAAT,GAAkBtQ,IAAI+P,GAAJ,EAASK,GAAT,CAAlB,GAAkCO,WAAhD;AACA,MAAME,OAAON,SAASA,MAAT,GAAkBvQ,IAAIkQ,GAAJ,EAASF,GAAT,CAAlB,GAAkCW,WAA/C;AACA,MAAMG,QAAQT,SAASA,MAAT,GAAkBrQ,IAAIiQ,GAAJ,EAASE,GAAT,CAAlB,GAAkCQ,WAAhD;;AAEA,OAAK,IAAIlb,MAAI,CAAb,EAAgBA,MAAI,CAApB,EAAuB,EAAEA,GAAzB,EAA4B;AAC1Bqa,WAAOra,GAAP,IAAYmb,QAAQjB,GAAGla,GAAH,CAAR,GAAgBob,OAAOjB,GAAGna,GAAH,CAAvB,GAA+Bqb,QAAQjB,GAAGpa,GAAH,CAAnD;AACD;AACD,SAAOib,MAAP;AACD;;AAED,IAAMK,MAAM/Z,QAAZ;AACA,IAAMga,SAAS,CAACha,QAAhB;;AAEA,IAAMia,QAAQ,SAARA,KAAQ,CAACpgB,KAAD;AAAA,SAAW,CAACS,OAAO4f,QAAP,CAAgBrgB,KAAhB,CAAZ;AAAA,CAAd;IACQqgB,Q,GAAoB5f,M,CAApB4f,Q;IAAUC,K,GAAU7f,M,CAAV6f,K;;AAElB;;AAEA,SAASC,yBAAT,GAAqC;AACnC,SAAO,GAAG1gB,MAAH,CAAU,CACfY,OAAOoa,SADQ,EAEf,CAACpa,OAAOoa,SAFO,EAEI;AACnBpa,SAAOoa,SAHQ,EAIf,CAACpa,OAAOoa,SAJO,EAII;AACnBpa,SAAOoa,SALQ,EAMf,CAACpa,OAAOoa,SANO,CAAV,CAMc;AANd,GAAP;AAQD;;AAED;AACA;AACA;;kBAEe;AACbrO,QADa;AAEbG,wCAFa;AAGbE,wCAHa;AAIbE,cAJa;AAKbC,cALa;AAMbC,YANa;AAObG,oBAPa;AAQbF,UARa;AASbC,UATa;AAUbK,4BAVa;AAWbF,sCAXa;AAYbD,sBAZa;AAabK,oBAba;AAcbI,oCAda;AAebC,kCAfa;AAgBbG,wBAhBa;AAiBbE,kBAjBa;AAkBbC,gBAlBa;AAmBbI,oBAnBa;AAoBbC,UApBa;AAqBbI,oBArBa;AAsBbC,gCAtBa;AAuBbG,oCAvBa;AAwBbC,UAxBa;AAyBbE,cAzBa;AA0BbE,cA1Ba;AA2BbI,YA3Ba;AA4BbI,sBA5Ba;AA6BbE,gCA7Ba;AA8Bbc,8BA9Ba;AA+BbK,kCA/Ba;AAgCbC,gDAhCa;AAiCbC,0CAjCa;AAkCbG,sCAlCa;AAmCbM,gCAnCa;AAoCbZ,cApCa;AAqCba,kBArCa;AAsCbE,gBAtCa;AAuCbE,0BAvCa;AAwCbC,gCAxCa;AAyCbE,0BAzCa;AA0CbK,wBA1Ca;AA2CbE,gCA3Ca;AA4CbsB,sCA5Ca;AA6CbG,oCA7Ca;AA8CbG,gCA9Ca;AA+CbO,4BA/Ca;AAgDbG,sBAhDa;AAiDbE,0BAjDa;AAkDbC,gCAlDa;AAmDbC,8CAnDa;AAoDbe,oCApDa;AAqDbwB,8CArDa;AAsDbK,wCAtDa;AAuDbU,oCAvDa;AAwDbM,gCAxDa;AAyDbO,8DAzDa;AA0DbW,sCA1Da;AA2DbC,4BA3Da;AA4DbP,4CA5Da;AA6DbI,0CA7Da;AA8DbQ,kDA9Da;AA+DbE,gBA/Da;AAgEbjE,kBAhEa;AAiEbkE,4DAjEa;AAkEbO,sCAlEa;AAmEbY,kBAnEa;AAoEbQ,kBApEa;AAqEbE,kBArEa;AAsEbU,kBAtEa;AAuEbC,kBAvEa;AAwEbC,kBAxEa;AAyEbC,kBAzEa;AA0EbC,kBA1Ea;AA2EbC,wCA3Ea;AA4EbE,4CA5Ea;AA6EbC,wBA7Ea;AA8EbC,gDA9Ea;AA+EbE,sDA/Ea;AAgFbC,gDAhFa;AAiFbC,sDAjFa;AAkFbG,sDAlFa;AAmFbI,0CAnFa;AAoFbG,sCApFa;AAqFbqB,UArFa;AAsFbC,gBAtFa;AAuFbC,cAvFa;AAwFbI,SAAOF,KAxFM;AAyFbA,cAzFa;AA0FbD,oBA1Fa;;AA4Fb;AACAE;AA7Fa,C;;;;;;ACh6Df;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,CAAuB;AAClD,eAAe,mBAAO,CAAC,EAAqB;AAC5C,gBAAgB,mBAAO,CAAC,EAAsB;AAC9C,eAAe,mBAAO,CAAC,EAAqB;AAC5C,eAAe,mBAAO,CAAC,EAAqB;AAC5C,eAAe,mBAAO,CAAC,EAAqB;AAC5C,eAAe,mBAAO,CAAC,EAAqB;AAC5C,eAAe,mBAAO,CAAC,EAAqB;AAC5C,eAAe,mBAAO,CAAC,EAAqB,E;;;;;;ACpC5C,4B;;;;;;;;;;;;;ACAA;;;;;;IAEQ5jB,a,GAAkBkP,e,CAAlBlP,a;;;AAER,IAAM8jB,aAAa,CAAC,OAAD,EAAU,QAAV,CAAnB;;AAEA;AACA;AACA;;AAEA,SAASC,WAAT,CAAqBpgB,SAArB,EAAgCf,KAAhC,EAAuC;AACrC;AACAA,QAAMoB,cAAN,CAAqBa,IAArB,CAA0B,aAA1B;;AAEA;AACAlB,YAAUqgB,KAAV,GAAkB,UAACC,OAAD,EAAa,CAAE,CAAjC;;AAEA;AACAtgB,YAAUugB,MAAV,GAAmB,UAACD,OAAD,EAAa,CAAE,CAAlC;;AAEAtgB,YAAUwgB,QAAV,GAAqB,UAACC,UAAD,EAAgB;AACnC;AACA;AACA,QAAMC,gBAAgBD,WAAWE,oBAAX,EAAtB;AACA,QAAMhiB,KAAKqB,UAAU0gB,aAAV,CAAX;AACA,QAAI/hB,EAAJ,EAAQ;AACNA,SAAG8hB,UAAH;AACA;AACD;;AAED;AACAzgB,cAAUkH,KAAV,CAAgBuZ,UAAhB,EAA4B,IAA5B;;AAEA,SAAK,IAAIlgB,QAAQ,CAAjB,EAAoBA,QAAQtB,MAAM2hB,QAAN,CAAe3f,MAA3C,EAAmDV,OAAnD,EAA4D;AAC1DtB,YAAM2hB,QAAN,CAAergB,KAAf,EAAsBigB,QAAtB,CAA+BC,UAA/B;AACD;;AAEDzgB,cAAUkH,KAAV,CAAgBuZ,UAAhB,EAA4B,KAA5B;AACD,GAlBD;;AAoBAzgB,YAAUkH,KAAV,GAAkB,UAACuZ,UAAD,EAAaH,OAAb,EAAyB;AACzC,QAAMO,mBAAmB7gB,UAAUygB,WAAWK,YAAX,EAAV,CAAzB;AACA,QAAID,gBAAJ,EAAsB;AACpBA,uBAAiBP,OAAjB,EAA0BG,UAA1B;AACD;AACF,GALD;;AAOAzgB,YAAU+gB,cAAV,GAA2B,UAACC,UAAD,EAAgB;AACzC,QAAI/hB,MAAMgiB,UAAN,KAAqBD,UAAzB,EAAqC;AACnC,aAAOhhB,SAAP;AACD;;AAED,SAAK,IAAIO,QAAQ,CAAjB,EAAoBA,QAAQtB,MAAM2hB,QAAN,CAAe3f,MAA3C,EAAmD,EAAEV,KAArD,EAA4D;AAC1D,UAAM2gB,QAAQjiB,MAAM2hB,QAAN,CAAergB,KAAf,CAAd;AACA,UAAM4gB,KAAKD,MAAMH,cAAN,CAAqBC,UAArB,CAAX;AACA,UAAIG,EAAJ,EAAQ;AACN,eAAOA,EAAP;AACD;AACF;AACD,WAAO3e,SAAP;AACD,GAbD;;AAeAxC,YAAUohB,sBAAV,GAAmC,UAAC1d,IAAD,EAAU;AAC3C,QAAI,CAACzE,MAAMoiB,MAAX,EAAmB;AACjB,aAAO,IAAP;AACD;AACD,QAAIpiB,MAAMoiB,MAAN,CAAavhB,GAAb,CAAiB4D,IAAjB,CAAJ,EAA4B;AAC1B,aAAOzE,MAAMoiB,MAAb;AACD;AACD,WAAOpiB,MAAMoiB,MAAN,CAAaD,sBAAb,CAAoC1d,IAApC,CAAP;AACD,GARD;;AAUA1D,YAAUshB,cAAV,GAA2B,UAACC,IAAD,EAAU;AACnC,QAAI,CAACA,IAAL,EAAW;AACT;AACD;AACD,QAAM3Z,SAAS3I,MAAMuiB,kBAAN,CAAyB/kB,GAAzB,CAA6B8kB,IAA7B,CAAf;AACA;AACA,QAAI3Z,WAAWpF,SAAf,EAA0B;AACxBoF,aAAO6Z,UAAP,CAAkB,IAAlB;AACD,KAFD,MAEO;AACL;AACA,UAAMC,UAAU1hB,UAAU2hB,cAAV,CAAyBJ,IAAzB,CAAhB;AACA,UAAIG,OAAJ,EAAa;AACXA,gBAAQE,SAAR,CAAkB5hB,SAAlB;AACA0hB,gBAAQD,UAAR,CAAmB,IAAnB;AACAxiB,cAAMuiB,kBAAN,CAAyB9kB,GAAzB,CAA6B6kB,IAA7B,EAAmCG,OAAnC;AACAziB,cAAM2hB,QAAN,CAAe1f,IAAf,CAAoBwgB,OAApB;AACD;AACF;AACF,GAlBD;;AAoBA1hB,YAAU6hB,eAAV,GAA4B,UAACC,QAAD,EAAc;AACxC,QAAI,CAACA,QAAD,IAAa,CAACA,SAAS7gB,MAA3B,EAAmC;AACjC;AACD;;AAED,SAAK,IAAIV,QAAQ,CAAjB,EAAoBA,QAAQuhB,SAAS7gB,MAArC,EAA6C,EAAEV,KAA/C,EAAsD;AACpD,UAAMghB,OAAOO,SAASvhB,KAAT,CAAb;AACA,UAAMqH,SAAS3I,MAAMuiB,kBAAN,CAAyB/kB,GAAzB,CAA6B8kB,IAA7B,CAAf;AACA;AACA,UAAI3Z,WAAWpF,SAAf,EAA0B;AACxBoF,eAAO6Z,UAAP,CAAkB,IAAlB;AACD,OAFD,MAEO;AACL;AACA,YAAMC,UAAU1hB,UAAU2hB,cAAV,CAAyBJ,IAAzB,CAAhB;AACA,YAAIG,OAAJ,EAAa;AACXA,kBAAQE,SAAR,CAAkB5hB,SAAlB;AACA0hB,kBAAQD,UAAR,CAAmB,IAAnB;AACAxiB,gBAAMuiB,kBAAN,CAAyB9kB,GAAzB,CAA6B6kB,IAA7B,EAAmCG,OAAnC;AACAziB,gBAAM2hB,QAAN,CAAe1f,IAAf,CAAoBwgB,OAApB;AACD;AACF;AACF;AACF,GAtBD;;AAwBA1hB,YAAU+hB,YAAV,GAAyB,YAAM;AAC7B,SAAK,IAAIxhB,QAAQ,CAAjB,EAAoBA,QAAQtB,MAAM2hB,QAAN,CAAe3f,MAA3C,EAAmD,EAAEV,KAArD,EAA4D;AAC1DtB,YAAM2hB,QAAN,CAAergB,KAAf,EAAsBkhB,UAAtB,CAAiC,KAAjC;AACD;AACF,GAJD;;AAMAzhB,YAAUyhB,UAAV,GAAuB,UAACzf,GAAD,EAAS;AAC9B/C,UAAM+iB,OAAN,GAAgBhgB,GAAhB;AACD,GAFD;;AAIAhC,YAAUiiB,iBAAV,GAA8B,YAAM;AAClC,QAAIrhB,UAAU,IAAd;AACA,SAAK,IAAIL,QAAQ,CAAjB,EAAoBA,QAAQtB,MAAM2hB,QAAN,CAAe3f,MAA3C,EAAmD,EAAEV,KAArD,EAA4D;AAC1D,UAAM2gB,QAAQjiB,MAAM2hB,QAAN,CAAergB,KAAf,CAAd;AACA,UAAMyhB,UAAUd,MAAMgB,UAAN,EAAhB;AACA,UAAI,CAACF,OAAL,EAAc;AACZ,YAAMf,aAAaC,MAAMiB,aAAN,EAAnB;AACA,YAAIlB,UAAJ,EAAgB;AACdhiB,gBAAMuiB,kBAAN,CAAyBvf,MAAzB,CAAgCgf,UAAhC;AACD;AACD,YAAI,CAACrgB,OAAL,EAAc;AACZA,oBAAU,EAAV;AACD;AACDA,gBAAQM,IAAR,CAAaggB,KAAb;AACD,OATD,MASO;AACLA,cAAMO,UAAN,CAAiB,KAAjB;AACD;AACF;;AAED,QAAI7gB,OAAJ,EAAa;AACX;AACA3B,YAAM2hB,QAAN,GAAiB3hB,MAAM2hB,QAAN,CAAe7a,MAAf,CAAsB,UAAC5D,EAAD;AAAA,eAAQ,CAACvB,QAAQwhB,QAAR,CAAiBjgB,EAAjB,CAAT;AAAA,OAAtB,CAAjB;AACD;AACF,GAvBD;;AAyBAnC,YAAU2hB,cAAV,GAA2B,UAACU,OAAD,EAAa;AACtC,QAAI,CAACpjB,MAAMqjB,SAAX,EAAsB;AACpBjmB,oBAAc,iDAAd;AACA,aAAO,IAAP;AACD;AACD,QAAMsF,MAAM1C,MAAMqjB,SAAN,CAAgBC,UAAhB,CAA2BF,OAA3B,CAAZ;AACA,QAAI1gB,GAAJ,EAAS;AACPA,UAAI6gB,aAAJ,CAAkBH,OAAlB;AACD;AACD,WAAO1gB,GAAP;AACD,GAVD;AAWD;;AAED;AACA;AACA;;AAEA,IAAM8gB,iBAAiB;AACrBpB,UAAQ,IADa;AAErBJ,cAAY,IAFS;AAGrBqB,aAAW,IAHU;AAIrB1B,YAAU,EAJW;AAKrBoB,WAAS;AALY,CAAvB;;AAQA;;AAEA,SAAS5a,MAAT,CAAgBpH,SAAhB,EAA2Bf,KAA3B,EAAsD;AAAA,MAApBqI,aAAoB,uEAAJ,EAAI;;AACpDpI,SAAOmD,MAAP,CAAcpD,KAAd,EAAqBwjB,cAArB,EAAqCnb,aAArC;;AAEA;AACAiE,kBAAM/O,GAAN,CAAUwD,SAAV,EAAqBf,KAArB;AACAsM,kBAAMvO,KAAN,CAAYgD,SAAZ,EAAuBf,KAAvB,EAA8B,OAA9B;;AAEAA,QAAMuiB,kBAAN,GAA2B,IAAIkB,GAAJ,EAA3B;;AAEAnX,kBAAM9O,GAAN,CAAUuD,SAAV,EAAqBf,KAArB,EAA4B,CAAC,SAAD,CAA5B;AACAsM,kBAAM5O,MAAN,CAAaqD,SAAb,EAAwBf,KAAxB,EAA+B,CAAC,QAAD,EAAW,YAAX,EAAyB,WAAzB,CAA/B;AACAsM,kBAAM3O,QAAN,CAAeoD,SAAf,EAA0Bf,KAA1B,EAAiC,CAAC,UAAD,CAAjC;;AAEA;AACAmhB,cAAYpgB,SAAZ,EAAuBf,KAAvB;AACD;;AAED;;AAEA,IAAMhC,cAAcsO,gBAAMtO,WAAN,CAAkBmK,MAAlB,EAA0B,aAA1B,CAApB;;AAEA;;kBAEe,EAAEnK,wBAAF,EAAemK,cAAf,EAAuB+Y,sBAAvB,E;;;;;;ACzMf;AACA;AACA;;;;;;;;;ACDA;AACA;;AAEa;;AAEb;AACA;AACA,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAU;AACjF,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;AAC3F,2CAA2C,KAA8B,IAAI,mBAAO,CAAC,EAAiB;AACtG,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAY;;AAEvF,qBAAqB,KAA8B,IAAI,mBAAO,CAAC,EAAM;;;AAGrE;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,4BAA4B;;AAE5B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;ACzaA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;;AAEA;;;;;;;;ACnDa;;;AAGb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,4BAA4B,YAAY;AACxC,qBAAqB,8BAA8B;AACnD;AA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;;;AC93DR,IAAMsmB,sBAAO;AAClB0G,iBAAe,CADG;AAElB1F,UAAQ,CAFU;AAGlB2F,mBAAiB;AAHC,CAAb;;AAMA,IAAM1G,0BAAS;AACpBY,WAAS,CADW;AAEpBF,UAAQ,CAFY;AAGpB4F,0BAAwB,CAHJ;AAIpBC,yBAAuB,CAJH;AAKpBC,yBAAuB,CALH;AAMpB/F,wBAAsB;AANF,CAAf;;kBASQ;AACbV,YADa;AAEbC;AAFa,C;;;;;;ACff,oZAAoZ,mUAAmU,+lBAA+lB,2lBAA2lB,cAAc,OAAO,mJAAmJ,G;;;;;;;;ACCzjE;AACA;;AAEa;;AAEb;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;;;AAG3F;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;;;AC9nHA;AACA;;AAEa;;AAEb;AACA;AACA,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAU;AACjF,uDAAuD,KAA8B,IAAI,mBAAO,CAAC,EAAwB;AACzH,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;AAC3F,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAU;;AAEjF,aAAa,KAA8B,IAAI,mBAAO,CAAC,EAA0B;AACjF,mCAAmC,KAA8B,IAAI,mBAAO,CAAC,EAAyB;AACtG,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAe;AACtF,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,EAAmB;;;AAGpG;;AAEA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;AACA;AACA,2D;AACA;AACA;;AAEA,mCAAmC,uBAAuB;AAC1D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,CAAa;;AAE9F;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC,mDAAmD;;AAEnD;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,kBAAkB;AACvC;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;;AC/mDA;AACA;;AAEa;;AAEb;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;;AAEa;;AAEb;AACA;AACA,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;AAC3F,2CAA2C,KAA8B,IAAI,mBAAO,CAAC,EAAiB;AACtG,qCAAqC,KAA8B,IAAI,mBAAO,CAAC,EAAc;;;AAG7F;;AAEA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,uCAAuC;AACrD,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA,iEAAiE;;AAEjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA,iBAAiB,8CAA8C;AAC/D;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK,wBAAwB;AAC7B;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,aAAa;AAC9B;AACA,8BAA8B,MAAM;AACpC,SAAS;AACT;AACA;AACA;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA,iFAAiF,MAAM,MAAM,iBAAiB,MAAM,MAAM;AAC1H,KAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AA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AAM,OAAO,eAAe,MAAM,WAAW,eAAe,MAAM,WAAW,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,WAAW,OAAO,eAAe,MAAM,SAAS,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,eAAe,MAAM,OAAO,eAAe,MAAM,MAAM,OAAO,eAAe,MAAM,WAAW,eAAe,MAAM,WAAW,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,WAAW,OAAO,eAAe,MAAM,SAAS,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,eAAe,MAAM,OAAO,eAAe,MAAM,MAAM,OAAO,eAAe,MAAM,kBAAkB,eAAe,MAAM,kBAAkB,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,WAAW,OAAO,eAAe,MAAM,SAAS,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,eAAe,MAAM,OAAO,eAAe,MAAM,MAAM,OAAO,eAAe,MAAM,kBAAkB,eAAe,MAAM,kBAAkB,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,WAAW,OAAO,eAAe,MAAM,SAAS,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,iBAAiB,MAAM,MAAM,UAAU,YAAY,YAAY,YAAY,OAAO,eAAe,MAAM,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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA,aAAa;AACb,2BAA2B,mBAAmB;AAC9C,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,kCAAkC,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;AAC1E;AACA,8CAA8C,qCAAqC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA,6BAA6B,+CAA+C;AAC5E,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qBAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA,uCAAuC,mBAAmB;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,4BAA4B;AAClE;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,YAAY;AACvC,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,4BAA4B;AAClE;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,YAAY;AACvC,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACv/BA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,yBAAyB,KAA8B,IAAI,mBAAO,CAAC,EAAwC;;AAE3G;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA,C;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,8CAA8C;AAC9C,8CAA8C;AAC9C;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,QAAQ;AACjD;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,iBAAiB;AAC7B,cAAc,kCAAkC;AAChD,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,kCAAkC;AAC9C,cAAc,iBAAiB;AAC/B,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,kCAAkC;AAC9C,cAAc,+BAA+B;AAC7C,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,yCAAyC;AACrD,cAAc,yCAAyC;AACvD,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,qBAAqB;AACjC;AACA;AACA;AACA;AACA,cAAc,yCAAyC;AACvD,gBAAgB,yCAAyC;AACzD,kBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC,uCAAuC;AACvC;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,+BAA+B;AAClD;;AAEA;AACA;AACA;AACA;;AAEA,sDAAsD,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA;AACA,OAAO,OAAO;AACd,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,aAAa;AACrC,yBAAyB,WAAW;AACpC;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,iBAAiB;AACxD;AACA,yBAAyB,WAAW;AACpC,wCAAwC,mBAAmB;;AAE3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,cAAc;AACtC;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA,OAAO;AACP,0BAA0B,YAAY;AACtC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA,OAAO;AACP,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,KAAK;AACxC;AACA;;AAEA,mCAAmC,KAAK;AACxC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4CAA4C;AACjD,KAAK,4CAA4C;AACjD,KAAK,4CAA4C;AACjD,KAAK,6CAA6C;AAClD,KAAK,6CAA6C;AAClD,KAAK,8CAA8C;AACnD,KAAK,4CAA4C;AACjD,KAAK,6CAA6C;AAClD,KAAK,6CAA6C;AAClD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK,8CAA8C;AACnD,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,MAAM;AAC3B,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B,qBAAqB,OAAO;AAC5B,qBAAqB,OAAO;AAC5B,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa,aAAa;AAC/C;AACA;AACA,oBAAoB,aAAa,aAAa;AAC9C;AACA;AACA,oBAAoB,cAAc,cAAc;AAChD;AACA;AACA;AACA,oBAAoB,aAAa,aAAa;AAC9C;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA,aAAa;AACb,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oBAAoB,MAAM;AAC1B,iBAAiB,MAAM;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,GAAG;AACH,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA,qBAAqB,qCAAqC;AAC1D;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qCAAqC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,2CAA2C,gBAAgB,EAAE;AAC7D;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,mDAAmD,gBAAgB,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa,OAAO;AACpB,aAAa,KAAK;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,KAAK;AAClB,aAAa,MAAM;AACnB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA,C;;;;;;;;ACj9HA;AACA;;AAEa;;AAEb;AACA;AACA;;;AAGA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA,qBAAqB,4DAA4D;AACjF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA,C;;;;;;;;ACzDA;AACA;;AAEa;;AAEb;;AAEA;AACA;AACA,2DAA2D,KAA8B,IAAI,mBAAO,CAAC,EAAe;;;AAGpH;AACA;AACA;AACA;AACA;;;;AAIA;AACA,0BAA0B;AAC1B;AACA,KAAK,OAAO;AACZ;AACA,8CAA8C,sCAAsC,EAAE;AACtF;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;;AAEa;;AAEb;AACA;;;AAGA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;;;AAGA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK,mCAAmC;AACxC;AACA;;AAEA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;;AC9MA;AACA;;AAEa;;AAEb;AACA;AACA,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;;;AAG3F;;AAEA;AACA;AACA,YAAY,YAAY;AACxB,UAAU;AACV;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,yBAAyB,+CAA+C;AACxE;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,gBAAgB;;AAEhB,iBAAiB,eAAe;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;;AAEA,gBAAgB;;AAEhB;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,gBAAgB;;AAEhB;;AAEA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;;AAEA,iBAAiB,cAAc;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;ACzLA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,e;AACA,oB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,KAAK;AACf,UAAU,KAAK;AACf;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,e;AACA,oB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;;AAGA;;;;;;;ACpjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB,OAAO;AAC9B,0BAA0B,iBAAiB;AAC3C;AACA,0BAA0B,iBAAiB;AAC3C;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA,K;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACpsBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB,OAAO;AAC9B,0BAA0B,iBAAiB,iBAAiB;AAC5D;AACA,0BAA0B,iBAAiB,iBAAiB;AAC5D;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;ACxhBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;;;AAGA;AACA;AACA,mBAAmB;AACnB,2BAA2B;AAC3B,mBAAmB;AACnB;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;AACA,+DAA+D,KAA8B,IAAI,mBAAO,CAAC,EAAqB;AAC9H,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;;;AAGrH;AACA;AACA,yBAAyB;AACzB,kBAAkB;AAClB,kBAAkB;AAClB,qBAAqB;AACrB,uBAAuB;AACvB;;;;AAIA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;AACA,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,+CAA+C,KAA8B,IAAI,mBAAO,CAAC,EAAY;;;AAGrG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA,mBAAmB,QAAQ;AAC3B,uBAAuB,qBAAqB;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,OAAO,QAAQ;AAC9B,mBAAmB,UAAU;AAC7B,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA,eAAe,QAAQ,QAAQ;AAC/B,mBAAmB,UAAU;AAC7B,uBAAuB,uBAAuB;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;;ACzLA;AACA;;AAEa;;AAEb;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;AAGA,+DAA+D,KAA8B,IAAI,mBAAO,CAAC,EAAqB;AAC9H,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,mDAAmD,KAA8B,IAAI,mBAAO,CAAC,EAAc;AAC3G,2DAA2D,KAA8B,IAAI,mBAAO,CAAC,EAAmB;AACxH,6DAA6D,KAA8B,IAAI,mBAAO,CAAC,EAAoB;AAC3H,uEAAuE,KAA8B,IAAI,mBAAO,CAAC,EAAyB;AAC1I,+DAA+D,KAA8B,IAAI,mBAAO,CAAC,EAAqB;AAC9H,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,+CAA+C,KAA8B,IAAI,mBAAO,CAAC,EAAY;;;AAGrG;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;AACA,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,+CAA+C,KAA8B,IAAI,mBAAO,CAAC,EAAY;;;AAGrG;AACA;AACA,wBAAwB;AACxB,iBAAiB;AACjB,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;;AAEA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,QAAQ;AACvB;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT,uBAAuB,QAAQ;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;;;AAGA;AACA;AACA,sBAAsB;AACtB,sBAAsB;AACtB,yBAAyB;AACzB;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;AACA,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,+DAA+D,KAA8B,IAAI,mBAAO,CAAC,EAAqB;;;AAG9H;AACA;AACA;AACA;AACA,qBAAqB;AACrB,uBAAuB;AACvB,yBAAyB;AACzB;AACA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;AC5GA;AACa;;AAEb,gBAAgB,mBAAO,CAAC,CAAoB;;AAE5C,gBAAgB,mBAAO,CAAC,EAAe;AACvC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,gBAAgB,mBAAO,CAAC,EAAsB;;AAE9C;;AAEA;;AAEA;;;;;;;;ACbA;AACa;;;AAGb,YAAY,mBAAO,CAAC,CAAU;;;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK,wCAAwC,EAAE,aAAa,sBAAsB;AAClF,KAAK,oDAAoD,EAAE,aAAa,0BAA0B;;;AAGlG;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA,kCAAkC;;;AAGlC;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA,mBAAmB,qBAAqB,UAAU;;AAElD;AACA;AACA,oBAAoB,0BAA0B,gBAAgB,UAAU;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,0BAA0B,UAAU;;AAExD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,kBAAkB;;AAE3C;AACA;AACA,kDAAkD,OAAO;;AAEzD;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA,kBAAkB,YAAY;;AAE9B;AACA;;;;;;;;AC1La;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;;AAGA;;;;;;;;AClDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACnEa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;;AAEA,sBAAsB;AACtB;;;AAGA;;;;;;;;AC1Da;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;QC6ZgBH,M,GAAAA,M;;AA3chB;;;;AACA;;;;;;;;AAEA,IAAM0qC,cAAc,CAClB3xC,OAAOoa,SADW,EAElB,CAACpa,OAAOoa,SAFU,EAEC;AACnBpa,OAAOoa,SAHW,EAIlB,CAACpa,OAAOoa,SAJU,EAIC;AACnBpa,OAAOoa,SALW,EAMlB,CAACpa,OAAOoa,SANU,CAApB;;AASA;AACA;AACA;;AAEA,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gBAAczrD,SAAd,EAAyBf,KAAzB;AACD;;AAED;;AAEO,IAAMhC,oCAAcsO,gBAAMtO,WAAN,CAAkBmK,MAAlB,EAA0B,eAA1B,CAApB;;AAEP;;kBAEe,EAAEnK,wBAAF,EAAemK,cAAf,E;;;;;;AClFf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC,oZAAoZ,uQAAuQ,sZAAsZ,gLAAgL,G;;;;;;ACAjuC,6C;;;;;;ACAA,8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCA;;AACA;;AACA;;;;AACA;;AACA;;AAEA;;;;AACA;;;;AAEA;;;;AACA;;;;;;;;;AAEA,uBAAKspD,kBAAL,EAAe,QAAf,EAAyB,UAAUnwC,MAAV,EAAkB;AAAA;;AAAA;AAAA;;AACvC,SAAKowC,IAAL,CAAU,YAAV,EAAwB,YAAM;AAAA;AAAA;;AAC1B;AACA,YAAI,MAAK1xD,KAAL,CAAWxC,GAAX,CAAe,cAAf,KAAkCm0D,sBAAWC,KAAjD,EAAwD;AAAA;AAAA;;AACpD,kBAAKC,CAAL,CAAO,sBAAP,EAA+BC,OAA/B,CAAuC,8BAAuB;AAC1DlxD,sBAAM,MAAKZ,KAD+C;AAE1D+xD,6BAAa;AAF6C,aAAvB,CAAvC;AAIH,SALD;AAAA;AAAA;;AAF0B;AAS1B,YAAI,MAAK/xD,KAAL,CAAWgyD,GAAX,CAAe,OAAf,CAAJ,EAA6B;AAAA;AAAA;;AACzB,gBAAIC,mBAAJ,CAAkB;AACdC,4BAAY,KADE;AAEdtxD,sBAAM,MAAKZ;AAFG,aAAlB,EAIKshB,MAJL,GAKK6wC,GALL,CAKSC,WALT,CAKqB,MAAKP,CAAL,CAAO,cAAP,CALrB;AAMH,SAPD;AAAA;AAAA;AAQH,KAjBD;AADuC;AAmBvC,WAAOvwC,OAAO2J,IAAP,CAAY,IAAZ,CAAP;AACH,CApBD;;;AAsBAwmC,mBAAS1mC,SAAT,CAAmBsnC,MAAnB,CAA0B,2BAA1B,IAAyD,YAAY;AAAA;AAAA;;AACjE,2BAAY;AACR1lD,gBAAQ,MADA;AAER2lD,uBAAa,KAAKtyD,KAAL,CAAWuK,EAAxB,gBAFQ;AAGRlL,eAAO;AAHC,KAAZ,EAKKkzD,IALL,CAKU,UAACC,IAAD,EAAU;AAAA;AAAA;;AACZ;AACAH,yBAAOI,OAAP,CAAe,SAAf,EAA0B;AACtBC,kBAAM,IADgB;AAEtBC,kBAAM,oBAFgB;AAGtBluD,kBAAM,SAHgB;AAItBwE,qBAAS;AAJa,SAA1B;AAMH,KAbL,EAcK2pD,IAdL,CAcU,UAACJ,IAAD,EAAU;AAAA;AAAA;;AACZH,yBAAOI,OAAP,CAAe,SAAf,EAA0B;AACtBC,kBAAM,QADgB;AAEtBC,kBAAM,oBAFgB;AAGtBluD,kBAAM,QAHgB;AAItBwE,qBAAS;AAJa,SAA1B;AAMH,KArBL;AAsBH,CAvBD;;;AAyBA4pD,4BAAkBC,OAAlB,CACI,OADJ,EAEI,CAAC,MAAD,CAFJ,EAGI,uBAHJ,0R;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAA0C;AAChD,IAAI,kCAAO;AACX;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC;;;;;;;;;ACtRD;AACA;;AAEa;;AAEb;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA,uDAAuD,KAA8B,IAAI,mBAAO,CAAC,EAAwB;AACzH,2CAA2C,KAA8B,IAAI,mBAAO,CAAC,EAAiB;AACtG,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAY;AACvF,2DAA2D,KAA8B,IAAI,mBAAO,CAAC,EAAe;AACpH,2CAA2C,KAA8B,IAAI,mBAAO,CAAC,EAAiB;AACtG,mCAAmC,KAA8B,IAAI,mBAAO,CAAC,CAAa;AAC1F,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAU;AACjF,mCAAmC,KAA8B,IAAI,mBAAO,CAAC,EAAa;AAC1F,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAU;AACjF,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;AAC3F,qCAAqC,KAA8B,IAAI,mBAAO,CAAC,EAAc;;AAE7F;AACA;AACA,0BAA0B,KAA8B,IAAI,mBAAO,CAAC,EAA0B;;AAE9F,mCAAmC,KAA8B,IAAI,mBAAO,CAAC,EAAyB;;AAEtG,6BAA6B,KAA8B,IAAI,mBAAO,CAAC,EAAe;;AAEtF,yBAAyB,KAA8B,IAAI,mBAAO,CAAC,EAAwC;AAC3G,uCAAuC,KAA8B,IAAI,mBAAO,CAAC,EAAmB;;AAEpG,qBAAqB,KAA8B,IAAI,mBAAO,CAAC,EAAM;;AAErE;;AAEA;AACA;AACA;AACA;;;;;;;;;AC3CA;AACA;;AAEa;;AAEb;AACA;AACA,mCAAmC,KAA8B,IAAI,mBAAO,CAAC,CAAa;AAC1F,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAY;AACvF,2CAA2C,KAA8B,IAAI,mBAAO,CAAC,EAAiB;AACtG,2DAA2D,KAA8B,IAAI,mBAAO,CAAC,EAAe;AACpH,iCAAiC,KAA8B,IAAI,mBAAO,CAAC,EAAgB;;;AAG3F;;AAEA;AACA;AACA,cAAc,eAAe;AAC7B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;;AAEA,mBAAmB,4CAA4C;AAC/D;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mDAAmD;AACnD,qBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;;AAEA,iBAAiB,uCAAuC;AACxD;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oEAAoE;AACpE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mDAAmD,sFAAsF;AACzI;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,kBAAkB;AACpC,sBAAsB,gBAAgB;AACtC,0BAA0B,gBAAgB;AAC1C;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;;;;;ACtkBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB;;AAEA,kC;AACA,qB;AACA,gB;AACA,gB;AACA,8B;AACA,qB;AACA,E;;;AAGA;;;;;;;AC7SA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA,2B;AACA;AACA,E;;AAEA;;;;;;;AC5TA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,e;AACA,oB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oD;AACA;AACA;AACA;AACA;;AAEA,cAAc,WAAW,WAAW;AACpC;AACA;AACA;AACA;;AAEA,cAAc,WAAW,YAAY;AACrC;AACA;AACA;AACA;;AAEA,eAAe,YAAY,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,mBAAmB,YAAY,YAAY;AAC3C,mBAAmB,YAAY,YAAY;AAC3C,mBAAmB,YAAY,aAAa;;AAE5C,qBAAqB,cAAc,cAAc;AACjD,qBAAqB,cAAc,cAAc;AACjD,qBAAqB,cAAc,eAAe;;AAElD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C,aAAa;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,YAAY,YAAY;AACvC,eAAe,YAAY,YAAY;AACvC,eAAe,YAAY,aAAa;;AAExC;AACA,wBAAwB,yBAAyB;AACjD,4BAA4B,qBAAqB;AACjD,4BAA4B,yBAAyB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA,2CAA2C,aAAa;;AAExD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;;AAGA;;;;;;;AClwCA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;AACpC,WAAW,mBAAO,CAAC,EAAW;AAC9B,WAAW,mBAAO,CAAC,EAAW;AAC9B,WAAW,mBAAO,CAAC,EAAW;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA,e;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA,e;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA,e;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,O;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC;AACxC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACxiBA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,CAAa;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB,OAAO;AAC9B,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;AC1gBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEa;;AAEb;AACA;AACA;AACA,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,6DAA6D,KAA8B,IAAI,mBAAO,CAAC,EAAoB;AAC3H,uEAAuE,KAA8B,IAAI,mBAAO,CAAC,EAAyB;AAC1I,yDAAyD,KAA8B,IAAI,mBAAO,CAAC,EAAkB;AACrH,2DAA2D,KAA8B,IAAI,mBAAO,CAAC,EAAmB;AACxH,+CAA+C,KAA8B,IAAI,mBAAO,CAAC,EAAY;;;AAGrG;;AAEA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA,qBAAqB;AACrB,wDAAwD;AACxD,wDAAwD;AACxD,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA;;AAEA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA,sBAAsB;AACtB;AACA;;AAEA,uBAAuB,QAAQ;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB;AACtB;;AAEA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;;AAEL;AACA;;;;AAIA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C,uBAAuB,6BAA6B;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,QAAQ;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;AAIA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iC;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,2F;AACA;AACA,C;AACA;AACA;AACA;AACA,2E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;;;;;;ACp1Ba;;;AAGb,mBAAmB,mBAAO,CAAC,EAAgB;AAC3C,mBAAmB,mBAAO,CAAC,CAAgB;AAC3C,mBAAmB,mBAAO,CAAC,EAAiB;AAC5C,mBAAmB,mBAAO,CAAC,EAAiB;AAC5C,mBAAmB,mBAAO,CAAC,EAAgB;;AAE3C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA,8BAA8B;AAC9B;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;;AAElB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;;AAEjC;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,yCAAyC;;AAE9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;;;;;;AC/Ya;;;AAGb,mBAAmB,mBAAO,CAAC,EAAgB;AAC3C,mBAAmB,mBAAO,CAAC,CAAgB;AAC3C,mBAAmB,mBAAO,CAAC,EAAiB;AAC5C,mBAAmB,mBAAO,CAAC,EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,EAAiB;AAC5C,mBAAmB,mBAAO,CAAC,EAAgB;AAC3C,mBAAmB,mBAAO,CAAC,EAAiB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA,8BAA8B;AAC9B;AACA,qBAAqB,8BAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,eAAe;;AAElB;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,kEAAkE;;AAEvF;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,yCAAyC;;AAE9D;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;;;;;;ACtaa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,CAAiB;AACvC,cAAc,mBAAO,CAAC,EAAS;AAC/B,cAAc,mBAAO,CAAC,EAAW;AACjC,cAAc,mBAAO,CAAC,EAAS;AAC/B,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;;;AAGA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;;;AAGA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;AAC1B,0BAA0B;AAC1B,0BAA0B;AAC1B,0BAA0B;;AAE1B,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,sBAAsB,qBAAqB,cAAc,EAAE;;;AAG/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAY;AAC/B,kBAAkB,UAAU;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,wBAAwB;AACxB,YAAY;AACZ,UAAU;AACV,+BAA+B;AAC/B,gCAAgC;AAChC;AACA;;AAEA,sBAAsB;;AAEtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAA0B;;AAE3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,aAAa;;AAEb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;;AAEnE;AACA,yDAAyD;AACzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,aAAa;;AAEb;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO,EAAE;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,mBAAmB;;AAEnB;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO,EAAE;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,mBAAmB;AACnB,kBAAkB;AAClB,0BAA0B;AAC1B,4BAA4B;AAC5B,uBAAuB;AACvB,mBAAmB;AACnB,gBAAgB;AAChB,qBAAqB;AACrB,mBAAmB;AACnB,2BAA2B;AAC3B,uBAAuB;;AAEvB,kBAAkB;AAClB,kBAAkB;AAClB,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;AAEnB,iBAAiB;AACjB,qBAAqB;AACrB,qBAAqB;AACrB,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB,sBAAsB;AACtB,2BAA2B;AAC3B,oBAAoB;AACpB,uBAAuB;AACvB,qBAAqB;;AAErB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,oBAAoB;;AAEpB;AACA;;AAEA,sBAAsB;;AAEtB;;AAEA;;AAEA,2CAA2C;AAC3C,6CAA6C;AAC7C,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;;AAEvB;AACA;AACA;;AAEA,0BAA0B;AAC1B,+CAA+C;AAC/C;;AAEA,oBAAoB;AACpB,oBAAoB;AACpB;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA;AACA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB,sBAAsB;AACtB,mBAAmB;AACnB,kBAAkB;;;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,6BAA6B,uBAAuB;AACpD,8BAA8B,uBAAuB;AACrD;AACA;AACA;;;AAGA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB,sCAAsC;;AAEtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B,2BAA2B,aAAa;AACxC,oBAAoB,qBAAqB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;AACA;;AAEA,aAAa;;AAEb;AACA;AACA,qBAAqB;AACrB,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACj1Da;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACzDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,WAAW;AACX,WAAW;AACX,UAAU;AACV,UAAU;AACV;AACA,WAAW;AACX;AACA,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ;AACA,eAAe;AACf,WAAW;AACX,WAAW;AACX,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,YAAY;AACZ,WAAW;AACX,SAAS;AACT;AACA,UAAU;AACV,WAAW;AACX,WAAW;AACX;;;AAGA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,gCAAgC;AAChC;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB,qCAAqC;AACrC;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,qBAAqB;AACrB,uCAAuC;AACvC;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,mBAAmB;AACnB,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,kBAAkB;AAClB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxVa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAO,CAAC,CAAiB;AAC7C,oBAAoB,mBAAO,CAAC,EAAW;AACvC,oBAAoB,mBAAO,CAAC,EAAS;AACrC,oBAAoB,mBAAO,CAAC,EAAW;AACvC,oBAAoB,mBAAO,CAAC,EAAY;;AAExC;AACA;AACA;;AAEA;AACA;;;AAGA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;;AAGA,gBAAgB;AAChB,iBAAiB;AACjB,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,mBAAmB;AACnB,gBAAgB;AAChB,mBAAmB;AACnB,iBAAiB;AACjB,qBAAqB;AACrB,uBAAuB;AACvB,uBAAuB;AACvB,sBAAsB;AACtB,qBAAqB;AACrB,sBAAsB;AACtB,wBAAwB;AACxB,yBAAyB;AACzB,yBAAyB;AACzB,wBAAwB;AACxB,2BAA2B;AAC3B,yBAAyB;AACzB,4BAA4B;AAC5B,0BAA0B;AAC1B,wBAAwB;AACxB,kBAAkB;AAClB,mBAAmB;AACnB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,iBAAiB;;AAEjB;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,gBAAgB;AAChB,oBAAoB;AACpB,gBAAgB;AAChB,wBAAwB;AACxB,iBAAiB;AACjB,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB;AACA,mBAAmB;;AAEnB;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,qBAAqB;;AAErB;AACA,gBAAgB;AAChB,gBAAgB;;AAEhB;AACA,kBAAkB;AAClB,kBAAkB;;AAElB;AACA,iBAAiB;;AAEjB;AACA,sBAAsB;AACtB,uBAAuB;AACvB,mBAAmB;AACnB,oBAAoB;;AAEpB;AACA,iBAAiB;AACjB,gBAAgB;AAChB,iBAAiB;AACjB,gBAAgB;AAChB,mBAAmB;;AAEnB,mCAAmC;AACnC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,sBAAsB;AACtB,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;;AAEA,6BAA6B,uBAAuB;AACpD;AACA;AACA,gBAAgB;AAChB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B,uBAAuB;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,uBAAuB;AACrC,sBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;AAC9C,uBAAuB,uBAAuB;;AAE9C,uEAAuE,UAAU;;AAEjF;AACA;AACA,sBAAsB,uBAAuB;;AAE7C,uEAAuE,UAAU;;AAEjF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB,WAAW;AACX,UAAU;AACV,iBAAiB;AACjB,WAAW;AACX,WAAW;AACX,gBAAgB;AAChB,WAAW;AACX,WAAW;AACX;AACA,eAAe;AACf,mCAAmC;AACnC,aAAa;AACb,mCAAmC;AACnC,UAAU;AACV,UAAU;AACV,+BAA+B;AAC/B;;AAEA,QAAQ;;AAER;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,qBAAqB,EAAE;;;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,4BAA4B,aAAa;AACzC,2BAA2B,iBAAiB;AAC5C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,oEAAoE;AACpE;AACA;AACA;;AAEA,sCAAsC,OAAO;AAC7C;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,OAAO;;AAExC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,kEAAkE;AAClE;AACA;AACA;;AAEA,kCAAkC,OAAO;AACzC;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,OAAO;AACzD;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,oEAAoE;AACpE;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,OAAO;AACzD;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA,aAAa;AACb,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB;AACzD;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC,kBAAkB;AACnD;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B,uBAAuB;AACpD;AACA,+BAA+B,uBAAuB;;AAEtD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,uBAAuB;AACpF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnhDa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,CAAiB;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB,cAAc;AACd,cAAc;AACd,uBAAuB;AACvB,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,eAAe;AACf,WAAW;AACX,WAAW;AACX,UAAU;AACV,WAAW;AACX,WAAW;AACX,kBAAkB;AAClB;AACA,iBAAiB;AACjB,UAAU;AACV,2CAA2C,eAAe;AAC1D,0CAA0C,eAAe;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA,eAAe,aAAa;AAC5B;AACA;;AAEA;AACA;AACA,qBAAqB,UAAU;AAC/B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA,kBAAkB;AAClB,sCAAsC,2BAA2B;AACjE,uCAAuC;AACvC,wCAAwC;AACxC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA,eAAe,WAAW;AAC1B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;;AAEA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,GAAG,OAAO;AACV;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,UAAU;AACV,YAAY;AACZ,qBAAqB;AACrB,cAAc;AACd,WAAW;AACX,WAAW;AACX,mBAAmB;AACnB,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACtVa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,YAAY,mBAAO,CAAC,CAAiB;;AAErC;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;;;AAGA,oBAAoB,sBAAsB,qBAAqB,cAAc,EAAE;;AAE/E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA,kCAAkC;AAClC,iCAAiC;AACjC,iCAAiC;AACjC,4BAA4B;AAC5B,iCAAiC;;AAEjC;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA,2BAA2B;AAC3B,oBAAoB;AACpB,6BAA6B;AAC7B;;;;AAIA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,WAAW;AACX,WAAW;AACX,YAAY;AACZ,QAAQ;AACR,mBAAmB;;AAEnB,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA,+CAA+C;;AAE/C,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,UAAU,EAAE;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;;AAE/B;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C,uBAAuB;AACvB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB,qBAAqB;AACrB;AACA,0CAA0C;AAC1C,eAAe;AACf,WAAW;AACX,QAAQ;;AAER;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,gBAAgB;AAC7B;AACA,oBAAoB,UAAU;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,WAAW;AACX,aAAa;AACb,WAAW;AACX,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA;AACA;AACA,aAAa;AACb,QAAQ,gBAAgB;AACxB;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA,aAAa,aAAa,QAAQ,iCAAiC;AACnE,aAAa,aAAa,QAAQ,iCAAiC;AACnE,aAAa,cAAc,OAAO,+BAA+B;;AAEjE;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,eAAe;AACf,kBAAkB;AAClB;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,YAAY;AACZ;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,OAAO;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA,WAAW;AACX,SAAS;AACT,aAAa;AACb,WAAW;AACX,YAAY;;AAEZ;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA,OAAO;AACP;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,kCAAkC;AAClC;AACA,eAAe;AACf;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA,oCAAoC;AACpC;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,KAAK;AACL;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,oBAAoB;AACpB,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,WAAW;AACxB;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,QAAQ,OAAO,wBAAwB;;AAE9E;AACA;AACA;AACA,eAAe;AACf;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;;AAE9B,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB;AACA,QAAQ;AACR,mBAAmB;AACnB,aAAa;;AAEb,wCAAwC;;AAExC,gBAAgB;AAChB,oBAAoB;AACpB,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD,aAAa,eAAe;AAC5B;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;;AAEA,KAAK;;AAEL,+BAA+B,kCAAkC;AACjE;;AAEA,KAAK;AACL;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB;AACA,QAAQ;AACR,mBAAmB;AACnB,aAAa;;AAEb,wCAAwC;;AAExC,gBAAgB;AAChB,oBAAoB;AACpB,oBAAoB;;AAEpB,+BAA+B;AAC/B;AACA;AACA;AACA;;AAEA,aAAa,eAAe;AAC5B;AACA;;AAEA;AACA;;AAEA,KAAK;AACL,UAAU,iCAAiC,EAAE;;AAE7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,gCAAgC;AAChC,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA,wCAAwC;AACxC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,IAAI,MAAM,GAAG,MAAM,GAAG;AAChD;AACA;AACA;AACA,SAAS,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA,wDAAwD;AACxD,uCAAuC;AACvC;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iBAAiB;AACjB,WAAW;AACX;AACA,4BAA4B;AAC5B,sBAAsB;;AAEtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,wBAAwB;;AAE1D,GAAG;AACH;AACA,4CAA4C;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;ACrsCA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,oBAAoB;AACpB,0BAA0B;;AAE1B;AACA;AACA;AACA,WAAW,mBAAO,CAAC,EAAY;;AAE/B;AACA;AACA;AACA,aAAa,mBAAO,CAAC,EAAc;;AAEnC;AACA;AACA;AACA,aAAa,mBAAO,CAAC,GAAc;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAO,CAAC,GAAiB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,EAAe;;AAErC;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAO,CAAC,EAAc;;AAEnC;AACA;AACA,SAAS,mBAAO,CAAC,GAAc;;AAE/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;;AAEA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA,kBAAkB,YAAY;AAC9B;AACA,kBAAkB,YAAY;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,sCAAsC;AACjE;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,8CAA8C;AAC9C;;AAEA;AACA;;;AAGA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;;;AC/GA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;;;ACpGA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,8CAA8C;AAC9C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,oCAAoC;AACpC,iCAAiC;AACjC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;ACjJA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC,8BAA8B;;AAE9B;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;;AC/FA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,aAAa;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,wCAAwC;AACjE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB,EAAE;AAClD;AACA;AACA;;AAEA;AACA;AACA,CAAC,UAAU,sBAAM,IAAI,uBAAU;AAC/B,EAAE,kCAAO,YAAY,aAAa,EAAE;AAAA,oGAAC;AACrC,CAAC;AACD;AACA;;AAEA,CAAC;AACD;AACA;AACA,EAAE,sBAAuC;AACzC;;;;;;;;;;ACnFA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB,iBAAiB;;AAElE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,8BAA8B;AAC9B,0BAA0B;AAC1B,iBAAiB;AACjB,oBAAoB;AACpB;AACA,2BAA2B;AAC3B,aAAa;AACb,aAAa;AACb,eAAe;AACf;AACA,uBAAuB;AACvB;;AAEA,2BAA2B,sBAAsB;AACjD,2BAA2B,gCAAgC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA,mCAAmC,qBAAqB,EAAE;AAC1D;;AAEA;AACA;AACA,2BAA2B,sBAAsB,aAAa;;AAE9D;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;;AAElC;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4CAA4C,EAAE;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAQ;AACjC,GAAG;AACH,CAAC,UAAU,IAA2C;AACtD,EAAE,kCAAO,YAAY,mBAAmB,EAAE;AAAA,oGAAC;AAC3C;;AAEA;AACA,CAAC;AACD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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ACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;AC7SA,wZAAwZ,kUAAkU,0BAA0B,kIAAkI,sPAAsP,iCAAiC,gCAAgC,+BAA+B,kBAAkB,0LAA0L,4CAA4C,4CAA4C,6EAA6E,kDAAkD,2DAA2D,oCAAoC,wFAAwF,OAAO,eAAe,qFAAqF,OAAO,kDAAkD,GAAG,G;;;;;;ACA78D,uZAAuZ,iUAAiU,0BAA0B,0BAA0B,2BAA2B,yJAAyJ,sPAAsP,iCAAiC,iCAAiC,gCAAgC,gCAAgC,+BAA+B,kBAAkB,wKAAwK,4CAA4C,gCAAgC,wCAAwC,0DAA0D,2FAA2F,2CAA2C,OAAO,sCAAsC,eAAe,iCAAiC,mCAAmC,6CAA6C,OAAO,qDAAqD,mEAAmE,4CAA4C,OAAO,eAAe,qDAAqD,4CAA4C,OAAO,0CAA0C,uLAAuL,kDAAkD,GAAG,G;;;;;;ACAjjF,oZAAoZ,uXAAuX,6CAA6C,wBAAwB,uBAAuB,qEAAqE,qBAAqB,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,8DAA8D,uBAAuB,uBAAuB,6BAA6B,uBAAuB,uBAAuB,kDAAkD,0DAA0D,+BAA+B,wBAAwB,yBAAyB,0BAA0B,oBAAoB,wBAAwB,wBAAwB,uBAAuB,wBAAwB,uBAAuB,qPAAqP,kIAAkI,gCAAgC,uBAAuB,0BAA0B,wDAAwD,uDAAuD,kDAAkD,kBAAkB,GAAG,kHAAkH,uCAAuC,sLAAsL,yCAAyC,2BAA2B,qBAAqB,KAAK,iEAAiE,yCAAyC,oCAAoC,0EAA0E,6XAA6X,sFAAsF,4JAA4J,kBAAkB,kBAAkB,iBAAiB,qBAAqB,wHAAwH,4CAA4C,iNAAiN,yKAAyK,yKAAyK,yKAAyK,yKAAyK,yKAAyK,iFAAiF,iFAAiF,uCAAuC,+LAA+L,oHAAoH,oCAAoC,iMAAiM,uDAAuD,gCAAgC,iIAAiI,mCAAmC,uDAAuD,iCAAiC,uHAAuH,gDAAgD,4CAA4C,sCAAsC,0DAA0D,iCAAiC,qBAAqB,iCAAiC,YAAY,oQAAoQ,8EAA8E,wOAAwO,4LAA4L,kEAAkE,yBAAyB,OAAO,EAAE,6BAA6B,eAAe,OAAO,EAAE,sBAAsB,OAAO,0DAA0D,2FAA2F,KAAK,aAAa,cAAc,KAAK,GAAG,G;;;;;;ACAv/O,oZAAoZ,uXAAuX,6CAA6C,wBAAwB,uBAAuB,qEAAqE,qBAAqB,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,6BAA6B,gCAAgC,8DAA8D,uBAAuB,uBAAuB,6BAA6B,uBAAuB,uBAAuB,kDAAkD,gEAAgE,+BAA+B,wBAAwB,wXAAwX,yCAAyC,2BAA2B,qBAAqB,KAAK,iEAAiE,yCAAyC,oCAAoC,0EAA0E,6XAA6X,sFAAsF,4JAA4J,kBAAkB,kBAAkB,iBAAiB,qBAAqB,wHAAwH,4CAA4C,iNAAiN,yKAAyK,yKAAyK,yKAAyK,yKAAyK,yKAAyK,iFAAiF,iFAAiF,uCAAuC,+LAA+L,oHAAoH,oCAAoC,iMAAiM,uDAAuD,gCAAgC,iIAAiI,mCAAmC,uDAAuD,iCAAiC,uHAAuH,gDAAgD,4CAA4C,mCAAmC,iCAAiC,oBAAoB,uCAAuC,uEAAuE,6HAA6H,8EAA8E,wOAAwO,kEAAkE,6BAA6B,eAAe,OAAO,EAAE,sBAAsB,iBAAiB,OAAO,0DAA0D,2FAA2F,KAAK,aAAa,cAAc,KAAK,GAAG,G;;;;;;ACA15M,oZAAoZ,uQAAuQ,kCAAkC,0BAA0B,yBAAyB,uBAAuB,uBAAuB,uBAAuB,kBAAkB,0QAA0Q,sCAAsC,yCAAyC,0BAA0B,GAAG,G;;;;;;ACA7rC,6C;;;;;;ACAA,8C;;;;;;ACAA,+C;;;;;;ACAA,+C;;;;;;ACAA,8C;;;;;;ACAA,6C;;;;;;ACAA,6C;;;;;;ACAA,8C;;;;;;ACAA,8C;;;;;;ACAA,6C;;;;;;;;;;;;ACAA,e","file":"plugin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dsa/static/built/\";\n\n \t__webpack_require__(77);\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 176);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap eff0702f4d9ca207b78e","import vtk from './vtk';\n\nlet globalMTime = 0;\n\nfunction getCurrentGlobalMTime() {\n return globalMTime;\n}\n\n// ----------------------------------------------------------------------------\n// Loggins function calls\n// ----------------------------------------------------------------------------\n/* eslint-disable no-prototype-builtins */\n\nconst fakeConsole = {};\nfunction noOp() {}\n\nconst consoleMethods = [\n 'log',\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'time',\n 'timeEnd',\n 'group',\n 'groupEnd',\n];\nconsoleMethods.forEach((methodName) => {\n fakeConsole[methodName] = noOp;\n});\n\nglobal.console = window.console.hasOwnProperty('log')\n ? window.console\n : fakeConsole;\n\nconst loggerFunctions = {\n debug: noOp, // Don't print debug by default\n error: global.console.error || noOp,\n info: global.console.info || noOp,\n log: global.console.log || noOp,\n warn: global.console.warn || noOp,\n};\n\nexport function setLoggerFunction(name, fn) {\n if (loggerFunctions[name]) {\n loggerFunctions[name] = fn || noOp;\n }\n}\n\nexport function vtkLogMacro(...args) {\n loggerFunctions.log(...args);\n}\n\nexport function vtkInfoMacro(...args) {\n loggerFunctions.info(...args);\n}\n\nexport function vtkDebugMacro(...args) {\n loggerFunctions.debug(...args);\n}\n\nexport function vtkErrorMacro(...args) {\n loggerFunctions.error(...args);\n}\n\nexport function vtkWarningMacro(...args) {\n loggerFunctions.warn(...args);\n}\n\n// ----------------------------------------------------------------------------\n// capitilze provided string\n// ----------------------------------------------------------------------------\n\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n// ----------------------------------------------------------------------------\n// Array helper\n// ----------------------------------------------------------------------------\n\nfunction safeArrays(model) {\n Object.keys(model).forEach((key) => {\n if (Array.isArray(model[key])) {\n model[key] = [].concat(model[key]);\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n\nfunction enumToString(e, value) {\n return Object.keys(e).find((key) => e[key] === value);\n}\n\nfunction getStateArrayMapFunc(item) {\n if (item.isA) {\n return item.getState();\n }\n return item;\n}\n\n// ----------------------------------------------------------------------------\n// vtkObject: modified(), onModified(callback), delete()\n// ----------------------------------------------------------------------------\n\nexport function obj(publicAPI = {}, model = {}) {\n // Ensure each instance as a unique ref of array\n safeArrays(model);\n\n const callbacks = [];\n model.mtime = Number.isInteger(model.mtime) ? model.mtime : ++globalMTime;\n model.classHierarchy = ['vtkObject'];\n\n function off(index) {\n callbacks[index] = null;\n }\n\n function on(index) {\n function unsubscribe() {\n off(index);\n }\n return Object.freeze({ unsubscribe });\n }\n\n publicAPI.isDeleted = () => !!model.deleted;\n\n publicAPI.modified = (otherMTime) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (otherMTime && otherMTime < model.mtime) {\n return;\n }\n\n model.mtime = ++globalMTime;\n callbacks.forEach((callback) => callback && callback(publicAPI));\n };\n\n publicAPI.onModified = (callback) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n const index = callbacks.length;\n callbacks.push(callback);\n return on(index);\n };\n\n publicAPI.getMTime = () => model.mtime;\n\n publicAPI.isA = (className) => {\n let count = model.classHierarchy.length;\n // we go backwards as that is more likely for\n // early termination\n while (count--) {\n if (model.classHierarchy[count] === className) {\n return true;\n }\n }\n return false;\n };\n\n publicAPI.getClassName = (depth = 0) =>\n model.classHierarchy[model.classHierarchy.length - 1 - depth];\n\n publicAPI.set = (map = {}, noWarning = false, noFunction = false) => {\n let ret = false;\n Object.keys(map).forEach((name) => {\n const fn = noFunction ? null : publicAPI[`set${capitalize(name)}`];\n if (fn && Array.isArray(map[name])) {\n ret = fn(...map[name]) || ret;\n } else if (fn) {\n ret = fn(map[name]) || ret;\n } else {\n // Set data on model directly\n if (['mtime'].indexOf(name) === -1 && !noWarning) {\n vtkWarningMacro(\n `Warning: Set value to model directly ${name}, ${map[name]}`\n );\n }\n model[name] = map[name];\n ret = true;\n }\n });\n return ret;\n };\n\n publicAPI.get = (...list) => {\n if (!list.length) {\n return model;\n }\n const subset = {};\n list.forEach((name) => {\n subset[name] = model[name];\n });\n return subset;\n };\n\n publicAPI.getReferenceByName = (val) => model[val];\n\n publicAPI.delete = () => {\n Object.keys(model).forEach((field) => delete model[field]);\n callbacks.forEach((el, index) => off(index));\n\n // Flag the instance being deleted\n model.deleted = true;\n };\n\n // Add serialization support\n publicAPI.getState = () => {\n const jsonArchive = Object.assign({}, model, {\n vtkClass: publicAPI.getClassName(),\n });\n\n // Convert every vtkObject to its serializable form\n Object.keys(jsonArchive).forEach((keyName) => {\n if (jsonArchive[keyName] === null || jsonArchive[keyName] === undefined) {\n delete jsonArchive[keyName];\n } else if (jsonArchive[keyName].isA) {\n jsonArchive[keyName] = jsonArchive[keyName].getState();\n } else if (Array.isArray(jsonArchive[keyName])) {\n jsonArchive[keyName] = jsonArchive[keyName].map(getStateArrayMapFunc);\n }\n });\n\n // Sort resulting object by key name\n const sortedObj = {};\n Object.keys(jsonArchive)\n .sort()\n .forEach((name) => {\n sortedObj[name] = jsonArchive[name];\n });\n\n // Remove mtime\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n };\n\n // Add shallowCopy(otherInstance) support\n publicAPI.shallowCopy = (other, debug = false) => {\n if (other.getClassName() !== publicAPI.getClassName()) {\n throw new Error(\n `Cannot ShallowCopy ${other.getClassName()} into ${publicAPI.getClassName()}`\n );\n }\n const otherModel = other.get();\n\n const keyList = Object.keys(model).sort();\n const otherKeyList = Object.keys(otherModel).sort();\n\n otherKeyList.forEach((key) => {\n const keyIdx = keyList.indexOf(key);\n if (keyIdx === -1) {\n if (debug) {\n vtkDebugMacro(`add ${key} in shallowCopy`);\n }\n } else {\n keyList.splice(keyIdx, 1);\n }\n model[key] = otherModel[key];\n });\n if (keyList.length && debug) {\n vtkDebugMacro(`Untouched keys: ${keyList.join(', ')}`);\n }\n\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// getXXX: add getters\n// ----------------------------------------------------------------------------\n\nexport function get(publicAPI, model, fieldNames) {\n fieldNames.forEach((field) => {\n if (typeof field === 'object') {\n publicAPI[`get${capitalize(field.name)}`] = () => model[field.name];\n } else {\n publicAPI[`get${capitalize(field)}`] = () => model[field];\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// setXXX: add setters\n// ----------------------------------------------------------------------------\n\nconst objectSetterMap = {\n enum(publicAPI, model, field) {\n return (value) => {\n if (typeof value === 'string') {\n if (field.enum[value] !== undefined) {\n if (model[field.name] !== field.enum[value]) {\n model[field.name] = field.enum[value];\n publicAPI.modified();\n return true;\n }\n return false;\n }\n vtkErrorMacro(`Set Enum with invalid argument ${field}, ${value}`);\n throw new RangeError('Set Enum with invalid string argument');\n }\n if (typeof value === 'number') {\n if (model[field.name] !== value) {\n if (\n Object.keys(field.enum)\n .map((key) => field.enum[key])\n .indexOf(value) !== -1\n ) {\n model[field.name] = value;\n publicAPI.modified();\n return true;\n }\n vtkErrorMacro(`Set Enum outside numeric range ${field}, ${value}`);\n throw new RangeError('Set Enum outside numeric range');\n }\n return false;\n }\n vtkErrorMacro(\n `Set Enum with invalid argument (String/Number) ${field}, ${value}`\n );\n throw new TypeError('Set Enum with invalid argument (String/Number)');\n };\n },\n};\n\nfunction findSetter(field) {\n if (typeof field === 'object') {\n const fn = objectSetterMap[field.type];\n if (fn) {\n return (publicAPI, model) => fn(publicAPI, model, field);\n }\n\n vtkErrorMacro(`No setter for field ${field}`);\n throw new TypeError('No setter for field');\n }\n return function getSetter(publicAPI, model) {\n return function setter(value) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n if (model[field] !== value) {\n model[field] = value;\n publicAPI.modified();\n return true;\n }\n return false;\n };\n };\n}\n\nexport function set(publicAPI, model, fields) {\n fields.forEach((field) => {\n if (typeof field === 'object') {\n publicAPI[`set${capitalize(field.name)}`] = findSetter(field)(\n publicAPI,\n model\n );\n } else {\n publicAPI[`set${capitalize(field)}`] = findSetter(field)(\n publicAPI,\n model\n );\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// set/get XXX: add both setters and getters\n// ----------------------------------------------------------------------------\n\nexport function setGet(publicAPI, model, fieldNames) {\n get(publicAPI, model, fieldNames);\n set(publicAPI, model, fieldNames);\n}\n\n// ----------------------------------------------------------------------------\n// getXXX: add getters for object of type array with copy to be safe\n// getXXXByReference: add getters for object of type array without copy\n// ----------------------------------------------------------------------------\n\nexport function getArray(publicAPI, model, fieldNames) {\n fieldNames.forEach((field) => {\n publicAPI[`get${capitalize(field)}`] = () => [].concat(model[field]);\n publicAPI[`get${capitalize(field)}ByReference`] = () => model[field];\n });\n}\n\n// ----------------------------------------------------------------------------\n// setXXX: add setter for object of type array\n// if 'defaultVal' is supplied, shorter arrays will be padded to 'size' with 'defaultVal'\n// set...From: fast path to copy the content of an array to the current one without call to modified.\n// ----------------------------------------------------------------------------\n\nexport function setArray(\n publicAPI,\n model,\n fieldNames,\n size,\n defaultVal = undefined\n) {\n fieldNames.forEach((field) => {\n publicAPI[`set${capitalize(field)}`] = (...args) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n let array = args;\n // allow an array passed as a single arg.\n if (array.length === 1 && Array.isArray(array[0])) {\n /* eslint-disable prefer-destructuring */\n array = array[0];\n /* eslint-enable prefer-destructuring */\n }\n\n if (array.length !== size) {\n if (array.length < size && defaultVal !== undefined) {\n array = [].concat(array);\n while (array.length < size) array.push(defaultVal);\n } else {\n throw new RangeError('Invalid number of values for array setter');\n }\n }\n let changeDetected = false;\n model[field].forEach((item, index) => {\n if (item !== array[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected || model[field].length !== array.length) {\n model[field] = [].concat(array);\n publicAPI.modified();\n }\n return true;\n };\n\n publicAPI[`set${capitalize(field)}From`] = (otherArray) => {\n const target = model[field];\n otherArray.forEach((v, i) => {\n target[i] = v;\n });\n };\n });\n}\n\n// ----------------------------------------------------------------------------\n// set/get XXX: add setter and getter for object of type array\n// ----------------------------------------------------------------------------\n\nexport function setGetArray(\n publicAPI,\n model,\n fieldNames,\n size,\n defaultVal = undefined\n) {\n getArray(publicAPI, model, fieldNames);\n setArray(publicAPI, model, fieldNames, size, defaultVal);\n}\n\n// ----------------------------------------------------------------------------\n// vtkAlgorithm: setInputData(), setInputConnection(), getOutput(), getOutputPort()\n// ----------------------------------------------------------------------------\n\nexport function algo(publicAPI, model, numberOfInputs, numberOfOutputs) {\n if (model.inputData) {\n model.inputData = model.inputData.map(vtk);\n } else {\n model.inputData = [];\n }\n\n if (model.inputConnection) {\n model.inputConnection = model.inputConnection.map(vtk);\n } else {\n model.inputConnection = [];\n }\n\n if (model.output) {\n model.output = model.output.map(vtk);\n } else {\n model.output = [];\n }\n\n if (model.inputArrayToProcess) {\n model.inputArrayToProcess = model.inputArrayToProcess.map(vtk);\n } else {\n model.inputArrayToProcess = [];\n }\n\n // Cache the argument for later manipulation\n model.numberOfInputs = numberOfInputs;\n\n // Methods\n function setInputData(dataset, port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n if (port >= model.numberOfInputs) {\n let msg = `algorithm ${publicAPI.getClassName()} only has `;\n msg += `${model.numberOfInputs}`;\n msg += ' input ports. To add more input ports, use addInputData()';\n vtkErrorMacro(msg);\n return;\n }\n if (model.inputData[port] !== dataset || model.inputConnection[port]) {\n model.inputData[port] = dataset;\n model.inputConnection[port] = null;\n if (publicAPI.modified) {\n publicAPI.modified();\n }\n }\n }\n\n function getInputData(port = 0) {\n if (model.inputConnection[port]) {\n model.inputData[port] = model.inputConnection[port]();\n }\n return model.inputData[port];\n }\n\n function setInputConnection(outputPort, port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n if (port >= model.numberOfInputs) {\n let msg = `algorithm ${publicAPI.getClassName()} only has `;\n msg += `${model.numberOfInputs}`;\n msg += ' input ports. To add more input ports, use addInputConnection()';\n vtkErrorMacro(msg);\n return;\n }\n model.inputData[port] = null;\n model.inputConnection[port] = outputPort;\n }\n\n function getInputConnection(port = 0) {\n return model.inputConnection[port];\n }\n\n function addInputConnection(outputPort) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n model.numberOfInputs++;\n setInputConnection(outputPort, model.numberOfInputs - 1);\n }\n\n function addInputData(dataset) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n model.numberOfInputs++;\n setInputData(dataset, model.numberOfInputs - 1);\n }\n\n function getOutputData(port = 0) {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n if (publicAPI.shouldUpdate()) {\n // console.log('update filter', publicAPI.getClassName());\n publicAPI.update();\n }\n return model.output[port];\n }\n\n publicAPI.shouldUpdate = () => {\n const localMTime = model.mtime;\n let count = numberOfOutputs;\n let minOutputMTime = Infinity;\n while (count--) {\n if (!model.output[count]) {\n return true;\n }\n const mt = model.output[count].getMTime();\n if (mt < localMTime) {\n return true;\n }\n if (mt < minOutputMTime) {\n minOutputMTime = mt;\n }\n }\n\n count = model.numberOfInputs;\n while (count--) {\n if (\n model.inputConnection[count] &&\n model.inputConnection[count].filter.shouldUpdate()\n ) {\n return true;\n }\n }\n\n count = model.numberOfInputs;\n while (count--) {\n if (\n publicAPI.getInputData(count) &&\n publicAPI.getInputData(count).getMTime() > minOutputMTime\n ) {\n return true;\n }\n }\n return false;\n };\n\n function getOutputPort(port = 0) {\n const outputPortAccess = () => getOutputData(port);\n // Add reference to filter\n outputPortAccess.filter = publicAPI;\n return outputPortAccess;\n }\n\n // Handle input if needed\n if (model.numberOfInputs) {\n // Reserve inputs\n let count = model.numberOfInputs;\n while (count--) {\n model.inputData.push(null);\n model.inputConnection.push(null);\n }\n\n // Expose public methods\n publicAPI.setInputData = setInputData;\n publicAPI.setInputConnection = setInputConnection;\n publicAPI.addInputData = addInputData;\n publicAPI.addInputConnection = addInputConnection;\n publicAPI.getInputData = getInputData;\n publicAPI.getInputConnection = getInputConnection;\n }\n\n if (numberOfOutputs) {\n publicAPI.getOutputData = getOutputData;\n publicAPI.getOutputPort = getOutputPort;\n }\n\n publicAPI.update = () => {\n const ins = [];\n if (model.numberOfInputs) {\n let count = 0;\n while (count < model.numberOfInputs) {\n ins[count] = publicAPI.getInputData(count);\n count++;\n }\n }\n if (publicAPI.shouldUpdate()) {\n publicAPI.requestData(ins, model.output);\n }\n };\n\n publicAPI.getNumberOfInputPorts = () => model.numberOfInputs;\n publicAPI.getNumberOfOutputPorts = () => numberOfOutputs;\n\n publicAPI.getInputArrayToProcess = (inputPort) => {\n const arrayDesc = model.inputArrayToProcess[inputPort];\n const ds = model.inputData[inputPort];\n if (arrayDesc && ds) {\n return ds[`get${arrayDesc.fieldAssociation}`]().getArray(\n arrayDesc.arrayName\n );\n }\n return null;\n };\n publicAPI.setInputArrayToProcess = (\n inputPort,\n arrayName,\n fieldAssociation,\n attributeType = 'Scalars'\n ) => {\n while (model.inputArrayToProcess.length < inputPort) {\n model.inputArrayToProcess.push(null);\n }\n model.inputArrayToProcess[inputPort] = {\n arrayName,\n fieldAssociation,\n attributeType,\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n// Event handling: onXXX(callback), invokeXXX(args...)\n// ----------------------------------------------------------------------------\n\nexport function event(publicAPI, model, eventName) {\n const callbacks = [];\n const previousDelete = publicAPI.delete;\n\n function off(index) {\n callbacks[index] = null;\n }\n\n function on(index) {\n function unsubscribe() {\n off(index);\n }\n return Object.freeze({ unsubscribe });\n }\n\n function invoke() {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n /* eslint-disable prefer-rest-params */\n for (let index = 0; index < callbacks.length; ++index) {\n const cb = callbacks[index];\n if (cb) {\n cb.apply(publicAPI, arguments);\n }\n }\n /* eslint-enable prefer-rest-params */\n }\n\n publicAPI[`invoke${capitalize(eventName)}`] = invoke;\n\n publicAPI[`on${capitalize(eventName)}`] = (callback) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return null;\n }\n\n const index = callbacks.length;\n callbacks.push(callback);\n return on(index);\n };\n\n publicAPI.delete = () => {\n previousDelete();\n callbacks.forEach((el, index) => off(index));\n };\n}\n\n// ----------------------------------------------------------------------------\n// newInstance\n// ----------------------------------------------------------------------------\n\nexport function newInstance(extend, className) {\n const constructor = (initialValues = {}) => {\n const model = {};\n const publicAPI = {};\n extend(publicAPI, model, initialValues);\n return Object.freeze(publicAPI);\n };\n\n // Register constructor to factory\n if (className) {\n vtk.register(className, constructor);\n }\n\n return constructor;\n}\n\n// ----------------------------------------------------------------------------\n// Chain function calls\n// ----------------------------------------------------------------------------\n\nexport function chain(...fn) {\n return (...args) => fn.filter((i) => !!i).forEach((i) => i(...args));\n}\n\n// ----------------------------------------------------------------------------\n// Some utility methods for vtk objects\n// ----------------------------------------------------------------------------\n\nexport function isVtkObject(instance) {\n return instance && instance.isA && instance.isA('vtkObject');\n}\n\nexport function traverseInstanceTree(\n instance,\n extractFunction,\n accumulator = [],\n visitedInstances = []\n) {\n if (isVtkObject(instance)) {\n if (visitedInstances.indexOf(instance) >= 0) {\n // avoid cycles\n return accumulator;\n }\n\n visitedInstances.push(instance);\n const result = extractFunction(instance);\n if (result !== undefined) {\n accumulator.push(result);\n }\n\n // Now go through this instance's model\n const model = instance.get();\n Object.keys(model).forEach((key) => {\n const modelObj = model[key];\n if (Array.isArray(modelObj)) {\n modelObj.forEach((subObj) => {\n traverseInstanceTree(\n subObj,\n extractFunction,\n accumulator,\n visitedInstances\n );\n });\n } else {\n traverseInstanceTree(\n modelObj,\n extractFunction,\n accumulator,\n visitedInstances\n );\n }\n });\n }\n\n return accumulator;\n}\n\n// ----------------------------------------------------------------------------\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\nexport function debounce(func, wait, immediate) {\n let timeout;\n return (...args) => {\n const context = this;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// proxy(publicAPI, model, sectionName, propertyUI)\n//\n// - sectionName: Name of the section for UI\n// - propertyUI: List of props with their UI description\n//\n// Generated API\n// getProxyId() : String\n// listProxyProperties() : [string]\n// updateProxyProperty(name, prop)\n// getProxySection() => List of properties for UI generation\n// ----------------------------------------------------------------------------\nlet nextProxyId = 1;\n\nexport function proxy(publicAPI, model, sectionName, uiDescription = []) {\n const parentDelete = publicAPI.delete;\n\n // getProxyId\n model.proxyId = `${nextProxyId++}`;\n publicAPI.getProxyId = () => model.proxyId;\n\n // list\n const propertyNames = uiDescription.map((p) => p.name);\n publicAPI.listProxyProperties = () => propertyNames;\n\n // ui handling\n const ui = uiDescription.map((i) => Object.assign({}, i));\n publicAPI.updateProxyProperty = (propertyName, propUI) => {\n const prop = ui.find((p) => p.name === propertyName);\n if (prop) {\n Object.assign(prop, propUI);\n }\n };\n\n // property link\n model.propertyLinkMap = {};\n publicAPI.getPropertyLink = (id) => {\n if (model.propertyLinkMap[id]) {\n return model.propertyLinkMap[id];\n }\n let value = null;\n const links = [];\n let count = 0;\n let updateInProgress = false;\n\n function update(source) {\n if (updateInProgress) {\n return;\n }\n\n const needUpdate = [];\n let sourceLink = null;\n count = links.length;\n while (count--) {\n const link = links[count];\n if (link.instance === source) {\n sourceLink = link;\n } else {\n needUpdate.push(link);\n }\n }\n\n const newValue = sourceLink.instance[\n `get${capitalize(sourceLink.propertyName)}`\n ]();\n if (newValue !== value) {\n value = newValue;\n updateInProgress = true;\n while (needUpdate.length) {\n const linkToUpdate = needUpdate.pop();\n linkToUpdate.instance.set({ [linkToUpdate.propertyName]: value });\n }\n updateInProgress = false;\n }\n }\n\n function bind(instance, propertyName) {\n const subscription = instance.onModified(update);\n links.push({ instance, propertyName, subscription });\n }\n\n function unbind(instance, propertyName) {\n const indexToDelete = [];\n count = links.length;\n while (count--) {\n const link = links[count];\n if (link.instance === instance && link.propertyName === propertyName) {\n link.subscription.unsubscribe();\n indexToDelete.push(count);\n }\n }\n while (indexToDelete.length) {\n links.splice(indexToDelete.pop(), 1);\n }\n }\n\n function unsubscribe() {\n while (links.length) {\n links.pop().subscription.unsubscribe();\n }\n }\n\n const linkHandler = { bind, unbind, unsubscribe };\n model.propertyLinkMap[id] = linkHandler;\n return linkHandler;\n };\n\n // extract values\n function getProperties() {\n const values = [];\n const id = model.proxyId;\n for (let i = 0; i < propertyNames.length; i++) {\n const name = propertyNames[i];\n const value = publicAPI[`get${capitalize(name)}`]();\n values.push({ id, name, value });\n }\n return values;\n }\n\n // ui section\n publicAPI.getProxySection = () => ({\n id: model.proxyId,\n name: sectionName,\n ui,\n properties: getProperties(),\n });\n\n // free resources\n publicAPI.delete = () => {\n const list = Object.keys(model.propertyLinkMap);\n let count = list.length;\n while (count--) {\n model.propertyLinkMap[list[count]].unsubscribe();\n }\n parentDelete();\n };\n}\n\n// ----------------------------------------------------------------------------\n// proxyPropertyMapping(publicAPI, model, map)\n//\n// map = {\n// opacity: { modelKey: 'property', property: 'opacity' },\n// }\n//\n// Generated API:\n// Elevate set/get methods from internal object stored in the model to current one\n// ----------------------------------------------------------------------------\n\nexport function proxyPropertyMapping(publicAPI, model, map) {\n const parentDelete = publicAPI.delete;\n const subscriptions = [];\n\n const propertyNames = Object.keys(map);\n let count = propertyNames.length;\n while (count--) {\n const propertyName = propertyNames[count];\n const { modelKey, property } = map[propertyName];\n const methodSrc = capitalize(property);\n const methodDst = capitalize(propertyName);\n publicAPI[`get${methodDst}`] = model[modelKey][`get${methodSrc}`];\n publicAPI[`set${methodDst}`] = model[modelKey][`set${methodSrc}`];\n subscriptions.push(model[modelKey].onModified(publicAPI.modified));\n }\n\n publicAPI.delete = () => {\n while (subscriptions.length) {\n subscriptions.pop().unsubscribe();\n }\n parentDelete();\n };\n}\n\n// ----------------------------------------------------------------------------\n// proxyPropertyState(publicAPI, model, state, defaults)\n//\n// state = {\n// representation: {\n// 'Surface with edges': { property: { edgeVisibility: true, representation: 2 } },\n// Surface: { property: { edgeVisibility: false, representation: 2 } },\n// Wireframe: { property: { edgeVisibility: false, representation: 1 } },\n// Points: { property: { edgeVisibility: false, representation: 0 } },\n// },\n// }\n//\n// defaults = {\n// representation: 'Surface',\n// }\n//\n// Generated API\n// get / set Representation ( string ) => push state to various internal objects\n// ----------------------------------------------------------------------------\n\nexport function proxyPropertyState(\n publicAPI,\n model,\n state = {},\n defaults = {}\n) {\n model.this = publicAPI;\n\n function applyState(map) {\n const modelKeys = Object.keys(map);\n let count = modelKeys.length;\n while (count--) {\n const modelKey = modelKeys[count];\n model[modelKey].set(map[modelKey]);\n }\n }\n\n const modelKeys = Object.keys(defaults);\n let count = modelKeys.length;\n while (count--) {\n // Add default\n const key = modelKeys[count];\n model[key] = defaults[key];\n\n // Add set method\n const mapping = state[key];\n publicAPI[`set${capitalize(key)}`] = (value) => {\n if (value !== model[key]) {\n model[key] = value;\n const propValues = mapping[value];\n applyState(propValues);\n publicAPI.modified();\n }\n };\n }\n\n // Add getter\n if (modelKeys.length) {\n get(publicAPI, model, modelKeys);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Default export\n// ----------------------------------------------------------------------------\n\nexport default {\n algo,\n capitalize,\n chain,\n enumToString,\n event,\n get,\n getArray,\n getCurrentGlobalMTime,\n getStateArrayMapFunc,\n isVtkObject,\n newInstance,\n obj,\n safeArrays,\n set,\n setArray,\n setGet,\n setGetArray,\n setLoggerFunction,\n traverseInstanceTree,\n vtkDebugMacro,\n vtkErrorMacro,\n vtkInfoMacro,\n vtkLogMacro,\n vtkWarningMacro,\n debounce,\n proxy,\n proxyPropertyMapping,\n proxyPropertyState,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/macro.js","import seedrandom from 'seedrandom';\nimport macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro, vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n/* eslint-disable camelcase */\n/* eslint-disable no-cond-assign */\n/* eslint-disable no-bitwise */\n/* eslint-disable no-multi-assign */\n// ----------------------------------------------------------------------------\nlet randomSeedValue = 0;\nconst VTK_MAX_ROTATIONS = 20;\nconst VTK_SMALL_NUMBER = 1.0e-12;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkMath::${method} - NOT IMPLEMENTED`);\n}\n\nfunction vtkSwapVectors3(v1, v2) {\n for (let i = 0; i < 3; i++) {\n const tmp = v1[i];\n v1[i] = v2[i];\n v2[i] = tmp;\n }\n}\n\nfunction createArray(size = 3) {\n const array = [];\n while (array.length < size) {\n array.push(0);\n }\n return array;\n}\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst Pi = () => Math.PI;\nconst radiansFromDegrees = (deg) => deg / 180 * Math.PI;\nconst degreesFromRadians = (rad) => rad * 180 / Math.PI;\nconst { round, floor, ceil, min, max } = Math;\nconst ceilLog2 = notImplemented('ceilLog2');\nconst factorial = notImplemented('factorial');\n\nfunction nearestPowerOfTwo(xi) {\n let v = 1;\n while (v < xi) {\n v *= 2;\n }\n return v;\n}\n\nfunction isPowerOfTwo(x) {\n return x === nearestPowerOfTwo(x);\n}\n\nfunction binomial(m, n) {\n let r = 1;\n for (let i = 1; i <= n; ++i) {\n r *= (m - i + 1) / i;\n }\n return Math.floor(r);\n}\n\nfunction beginCombination(m, n) {\n if (m < n) {\n return 0;\n }\n\n const r = createArray(n);\n for (let i = 0; i < n; ++i) {\n r[i] = i;\n }\n return r;\n}\n\nfunction nextCombination(m, n, r) {\n let status = 0;\n for (let i = n - 1; i >= 0; --i) {\n if (r[i] < m - n + i) {\n let j = r[i] + 1;\n while (i < n) {\n r[i++] = j++;\n }\n status = 1;\n break;\n }\n }\n return status;\n}\n\nconst randomSeed = (seed) => {\n seedrandom(`${seed}`, { global: true });\n randomSeedValue = seed;\n};\n\nconst getSeed = () => randomSeedValue;\n\nfunction random(minValue = 0, maxValue = 1) {\n const delta = maxValue - minValue;\n return minValue + delta * Math.random();\n}\n\nconst gaussian = notImplemented('gaussian');\n\n// Vect3 operations\nfunction add(a, b, out) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n}\n\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n}\n\nfunction multiplyScalar(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n vec[2] *= scalar;\n}\n\nfunction multiplyScalar2D(vec, scalar) {\n vec[0] *= scalar;\n vec[1] *= scalar;\n}\n\nfunction dot(x, y) {\n return x[0] * y[0] + x[1] * y[1] + x[2] * y[2];\n}\n\nfunction outer(x, y, out_3x3) {\n for (let i = 0; i < 3; i++) {\n for (let j = 0; j < 3; j++) {\n out_3x3[i][j] = x[i] * y[j];\n }\n }\n}\n\nfunction cross(x, y, out) {\n const Zx = x[1] * y[2] - x[2] * y[1];\n const Zy = x[2] * y[0] - x[0] * y[2];\n const Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n}\n\nfunction norm(x, n = 3) {\n switch (n) {\n case 1:\n return Math.abs(x);\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n default: {\n let sum = 0;\n for (let i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n return Math.sqrt(sum);\n }\n }\n}\n\nfunction normalize(x) {\n const den = norm(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n return den;\n}\n\nfunction perpendiculars(x, y, z, theta) {\n const x2 = x[0] * x[0];\n const y2 = x[1] * x[1];\n const z2 = x[2] * x[2];\n const r = Math.sqrt(x2 + y2 + z2);\n\n let dx;\n let dy;\n let dz;\n\n // transpose the vector to avoid divide-by-zero error\n if (x2 > y2 && x2 > z2) {\n dx = 0;\n dy = 1;\n dz = 2;\n } else if (y2 > z2) {\n dx = 1;\n dy = 2;\n dz = 0;\n } else {\n dx = 2;\n dy = 0;\n dz = 1;\n }\n\n const a = x[dx] / r;\n const b = x[dy] / r;\n const c = x[dz] / r;\n const tmp = Math.sqrt(a * a + c * c);\n\n if (theta !== 0) {\n const sintheta = Math.sin(theta);\n const costheta = Math.cos(theta);\n\n if (y) {\n y[dx] = (c * costheta - a * b * sintheta) / tmp;\n y[dy] = sintheta * tmp;\n y[dz] = (-(a * costheta) - b * c * sintheta) / tmp;\n }\n\n if (z) {\n z[dx] = (-(c * sintheta) - a * b * costheta) / tmp;\n z[dy] = costheta * tmp;\n z[dz] = (a * sintheta - b * c * costheta) / tmp;\n }\n } else {\n if (y) {\n y[dx] = c / tmp;\n y[dy] = 0;\n y[dz] = -a / tmp;\n }\n\n if (z) {\n z[dx] = -a * b / tmp;\n z[dy] = tmp;\n z[dz] = -b * c / tmp;\n }\n }\n}\n\nfunction projectVector(a, b, projection) {\n const bSquared = dot(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n projection[2] = 0;\n return false;\n }\n\n const scale = dot(a, b) / bSquared;\n\n for (let i = 0; i < 3; i++) {\n projection[i] = b[i];\n }\n multiplyScalar(projection, scale);\n\n return true;\n}\n\nfunction dot2D(x, y) {\n return x[0] * y[0] + x[1] * y[1];\n}\n\nfunction projectVector2D(a, b, projection) {\n const bSquared = dot2D(b, b);\n\n if (bSquared === 0) {\n projection[0] = 0;\n projection[1] = 0;\n return false;\n }\n\n const scale = dot2D(a, b) / bSquared;\n\n for (let i = 0; i < 2; i++) {\n projection[i] = b[i];\n }\n multiplyScalar2D(projection, scale);\n\n return true;\n}\n\nfunction distance2BetweenPoints(x, y) {\n return (\n (x[0] - y[0]) * (x[0] - y[0]) +\n (x[1] - y[1]) * (x[1] - y[1]) +\n (x[2] - y[2]) * (x[2] - y[2])\n );\n}\n\nfunction angleBetweenVectors(v1, v2) {\n const crossVect = [0, 0, 0];\n cross(v1, v2, crossVect);\n return Math.atan2(norm(crossVect), dot(v1, v2));\n}\n\nfunction gaussianAmplitude(mean, variance, position) {\n const distanceFromMean = Math.abs(mean - position);\n return (\n 1 /\n Math.sqrt(2 * Math.PI * variance) *\n Math.exp(-(distanceFromMean ** 2) / (2 * variance))\n );\n}\n\nfunction gaussianWeight(mean, variance, position) {\n const distanceFromMean = Math.abs(mean - position);\n return Math.exp(-(distanceFromMean ** 2) / (2 * variance));\n}\n\nfunction outer2D(x, y, out_2x2) {\n for (let i = 0; i < 2; i++) {\n for (let j = 0; j < 2; j++) {\n out_2x2[i][j] = x[i] * y[j];\n }\n }\n}\n\nfunction norm2D(x2D) {\n return Math.sqrt(x2D[0] * x2D[0] + x2D[1] * x2D[1]);\n}\n\nfunction normalize2D(x) {\n const den = norm2D(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n }\n return den;\n}\n\nfunction determinant2x2(...args) {\n if (args.length === 2) {\n return args[0][0] * args[1][1] - args[1][0] * args[0][1];\n }\n if (args.length === 4) {\n return args[0] * args[3] - args[1] * args[2];\n }\n return Number.NaN;\n}\n\nfunction LUFactor3x3(mat_3x3, index_3) {\n let maxI;\n let tmp;\n let largest;\n const scale = [0, 0, 0];\n\n // Loop over rows to get implicit scaling information\n for (let i = 0; i < 3; i++) {\n largest = Math.abs(mat_3x3[i][0]);\n if ((tmp = Math.abs(mat_3x3[i][1])) > largest) {\n largest = tmp;\n }\n if ((tmp = Math.abs(mat_3x3[i][2])) > largest) {\n largest = tmp;\n }\n scale[i] = 1 / largest;\n }\n\n // Loop over all columns using Crout's method\n\n // first column\n largest = scale[0] * Math.abs(mat_3x3[0][0]);\n maxI = 0;\n if ((tmp = scale[1] * Math.abs(mat_3x3[1][0])) >= largest) {\n largest = tmp;\n maxI = 1;\n }\n if ((tmp = scale[2] * Math.abs(mat_3x3[2][0])) >= largest) {\n maxI = 2;\n }\n if (maxI !== 0) {\n vtkSwapVectors3(mat_3x3[maxI], mat_3x3[0]);\n scale[maxI] = scale[0];\n }\n index_3[0] = maxI;\n\n mat_3x3[1][0] /= mat_3x3[0][0];\n mat_3x3[2][0] /= mat_3x3[0][0];\n\n // second column\n mat_3x3[1][1] -= mat_3x3[1][0] * mat_3x3[0][1];\n mat_3x3[2][1] -= mat_3x3[2][0] * mat_3x3[0][1];\n largest = scale[1] * Math.abs(mat_3x3[1][1]);\n maxI = 1;\n if ((tmp = scale[2] * Math.abs(mat_3x3[2][1])) >= largest) {\n maxI = 2;\n vtkSwapVectors3(mat_3x3[2], mat_3x3[1]);\n scale[2] = scale[1];\n }\n index_3[1] = maxI;\n mat_3x3[2][1] /= mat_3x3[1][1];\n\n // third column\n mat_3x3[1][2] -= mat_3x3[1][0] * mat_3x3[0][2];\n mat_3x3[2][2] -=\n mat_3x3[2][0] * mat_3x3[0][2] + mat_3x3[2][1] * mat_3x3[1][2];\n index_3[2] = 2;\n}\n\nfunction LUSolve3x3(mat_3x3, index_3, x_3) {\n // forward substitution\n let sum = x_3[index_3[0]];\n x_3[index_3[0]] = x_3[0];\n x_3[0] = sum;\n\n sum = x_3[index_3[1]];\n x_3[index_3[1]] = x_3[1];\n x_3[1] = sum - mat_3x3[1][0] * x_3[0];\n\n sum = x_3[index_3[2]];\n x_3[index_3[2]] = x_3[2];\n x_3[2] = sum - mat_3x3[2][0] * x_3[0] - mat_3x3[2][1] * x_3[1];\n\n // back substitution\n x_3[2] /= mat_3x3[2][2];\n x_3[1] = (x_3[1] - mat_3x3[1][2] * x_3[2]) / mat_3x3[1][1];\n x_3[0] =\n (x_3[0] - mat_3x3[0][1] * x_3[1] - mat_3x3[0][2] * x_3[2]) / mat_3x3[0][0];\n}\n\nfunction linearSolve3x3(mat_3x3, x_3, y_3) {\n const a1 = mat_3x3[0][0];\n const b1 = mat_3x3[0][1];\n const c1 = mat_3x3[0][2];\n const a2 = mat_3x3[1][0];\n const b2 = mat_3x3[1][1];\n const c2 = mat_3x3[1][2];\n const a3 = mat_3x3[2][0];\n const b3 = mat_3x3[2][1];\n const c3 = mat_3x3[2][2];\n\n // Compute the adjoint\n const d1 = +determinant2x2(b2, b3, c2, c3);\n const d2 = -determinant2x2(a2, a3, c2, c3);\n const d3 = +determinant2x2(a2, a3, b2, b3);\n\n const e1 = -determinant2x2(b1, b3, c1, c3);\n const e2 = +determinant2x2(a1, a3, c1, c3);\n const e3 = -determinant2x2(a1, a3, b1, b3);\n\n const f1 = +determinant2x2(b1, b2, c1, c2);\n const f2 = -determinant2x2(a1, a2, c1, c2);\n const f3 = +determinant2x2(a1, a2, b1, b2);\n\n // Compute the determinant\n const det = a1 * d1 + b1 * d2 + c1 * d3;\n\n // Multiply by the adjoint\n const v1 = d1 * x_3[0] + e1 * x_3[1] + f1 * x_3[2];\n const v2 = d2 * x_3[0] + e2 * x_3[1] + f2 * x_3[2];\n const v3 = d3 * x_3[0] + e3 * x_3[1] + f3 * x_3[2];\n\n // Divide by the determinant\n y_3[0] = v1 / det;\n y_3[1] = v2 / det;\n y_3[2] = v3 / det;\n}\n\nfunction multiply3x3_vect3(mat_3x3, in_3, out_3) {\n const x =\n mat_3x3[0][0] * in_3[0] + mat_3x3[0][1] * in_3[1] + mat_3x3[0][2] * in_3[2];\n const y =\n mat_3x3[1][0] * in_3[0] + mat_3x3[1][1] * in_3[1] + mat_3x3[1][2] * in_3[2];\n const z =\n mat_3x3[2][0] * in_3[0] + mat_3x3[2][1] * in_3[1] + mat_3x3[2][2] * in_3[2];\n\n out_3[0] = x;\n out_3[1] = y;\n out_3[2] = z;\n}\n\nfunction multiply3x3_mat3(a_3x3, b_3x3, out_3x3) {\n const tmp = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];\n\n for (let i = 0; i < 3; i++) {\n tmp[0][i] =\n a_3x3[0][0] * b_3x3[0][i] +\n a_3x3[0][1] * b_3x3[1][i] +\n a_3x3[0][2] * b_3x3[2][i];\n tmp[1][i] =\n a_3x3[1][0] * b_3x3[0][i] +\n a_3x3[1][1] * b_3x3[1][i] +\n a_3x3[1][2] * b_3x3[2][i];\n tmp[2][i] =\n a_3x3[2][0] * b_3x3[0][i] +\n a_3x3[2][1] * b_3x3[1][i] +\n a_3x3[2][2] * b_3x3[2][i];\n }\n\n for (let j = 0; j < 3; j++) {\n out_3x3[j][0] = tmp[j][0];\n out_3x3[j][1] = tmp[j][1];\n out_3x3[j][2] = tmp[j][2];\n }\n}\n\nfunction multiplyMatrix(a, b, rowA, colA, rowB, colB, out_rowXcol) {\n // we need colA == rowB\n if (colA !== rowB) {\n vtkErrorMacro('Number of columns of A must match number of rows of B.');\n }\n\n // output matrix is rowA*colB\n // output row\n for (let i = 0; i < rowA; i++) {\n // output col\n for (let j = 0; j < colB; j++) {\n out_rowXcol[i][j] = 0;\n // sum for this point\n for (let k = 0; k < colA; k++) {\n out_rowXcol[i][j] += a[i][k] * b[k][j];\n }\n }\n }\n}\n\nfunction transpose3x3(in_3x3, outT_3x3) {\n let tmp;\n tmp = in_3x3[1][0];\n outT_3x3[1][0] = in_3x3[0][1];\n outT_3x3[0][1] = tmp;\n tmp = in_3x3[2][0];\n outT_3x3[2][0] = in_3x3[0][2];\n outT_3x3[0][2] = tmp;\n tmp = in_3x3[2][1];\n outT_3x3[2][1] = in_3x3[1][2];\n outT_3x3[1][2] = tmp;\n\n outT_3x3[0][0] = in_3x3[0][0];\n outT_3x3[1][1] = in_3x3[1][1];\n outT_3x3[2][2] = in_3x3[2][2];\n}\n\nfunction invert3x3(in_3x3, outI_3x3) {\n const a1 = in_3x3[0][0];\n const b1 = in_3x3[0][1];\n const c1 = in_3x3[0][2];\n const a2 = in_3x3[1][0];\n const b2 = in_3x3[1][1];\n const c2 = in_3x3[1][2];\n const a3 = in_3x3[2][0];\n const b3 = in_3x3[2][1];\n const c3 = in_3x3[2][2];\n\n // Compute the adjoint\n const d1 = +determinant2x2(b2, b3, c2, c3);\n const d2 = -determinant2x2(a2, a3, c2, c3);\n const d3 = +determinant2x2(a2, a3, b2, b3);\n\n const e1 = -determinant2x2(b1, b3, c1, c3);\n const e2 = +determinant2x2(a1, a3, c1, c3);\n const e3 = -determinant2x2(a1, a3, b1, b3);\n\n const f1 = +determinant2x2(b1, b2, c1, c2);\n const f2 = -determinant2x2(a1, a2, c1, c2);\n const f3 = +determinant2x2(a1, a2, b1, b2);\n\n // Divide by the determinant\n const det = a1 * d1 + b1 * d2 + c1 * d3;\n\n outI_3x3[0][0] = d1 / det;\n outI_3x3[1][0] = d2 / det;\n outI_3x3[2][0] = d3 / det;\n\n outI_3x3[0][1] = e1 / det;\n outI_3x3[1][1] = e2 / det;\n outI_3x3[2][1] = e3 / det;\n\n outI_3x3[0][2] = f1 / det;\n outI_3x3[1][2] = f2 / det;\n outI_3x3[2][2] = f3 / det;\n}\n\nfunction identity3x3(mat_3x3) {\n for (let i = 0; i < 3; i++) {\n mat_3x3[i][0] = mat_3x3[i][1] = mat_3x3[i][2] = 0;\n mat_3x3[i][i] = 1;\n }\n}\n\nfunction determinant3x3(mat_3x3) {\n return (\n mat_3x3[0][0] * mat_3x3[1][1] * mat_3x3[2][2] +\n mat_3x3[1][0] * mat_3x3[2][1] * mat_3x3[0][2] +\n mat_3x3[2][0] * mat_3x3[0][1] * mat_3x3[1][2] -\n mat_3x3[0][0] * mat_3x3[2][1] * mat_3x3[1][2] -\n mat_3x3[1][0] * mat_3x3[0][1] * mat_3x3[2][2] -\n mat_3x3[2][0] * mat_3x3[1][1] * mat_3x3[0][2]\n );\n}\n\nfunction quaternionToMatrix3x3(quat_4, mat_3x3) {\n const ww = quat_4[0] * quat_4[0];\n const wx = quat_4[0] * quat_4[1];\n const wy = quat_4[0] * quat_4[2];\n const wz = quat_4[0] * quat_4[3];\n\n const xx = quat_4[1] * quat_4[1];\n const yy = quat_4[2] * quat_4[2];\n const zz = quat_4[3] * quat_4[3];\n\n const xy = quat_4[1] * quat_4[2];\n const xz = quat_4[1] * quat_4[3];\n const yz = quat_4[2] * quat_4[3];\n\n const rr = xx + yy + zz;\n // normalization factor, just in case quaternion was not normalized\n let f = 1 / (ww + rr);\n const s = (ww - rr) * f;\n f *= 2;\n\n mat_3x3[0][0] = xx * f + s;\n mat_3x3[1][0] = (xy + wz) * f;\n mat_3x3[2][0] = (xz - wy) * f;\n\n mat_3x3[0][1] = (xy - wz) * f;\n mat_3x3[1][1] = yy * f + s;\n mat_3x3[2][1] = (yz + wx) * f;\n\n mat_3x3[0][2] = (xz + wy) * f;\n mat_3x3[1][2] = (yz - wx) * f;\n mat_3x3[2][2] = zz * f + s;\n}\n\nfunction areMatricesEqual(matA, matB) {\n if (!matA.length === matB.length) {\n return false;\n }\n\n function isEqual(element, index) {\n return element === matB[index];\n }\n return matA.every(isEqual);\n}\n\nfunction jacobiN(a, n, w, v) {\n let i;\n let j;\n let k;\n let iq;\n let ip;\n let numPos;\n let tresh;\n let theta;\n let t;\n let tau;\n let sm;\n let s;\n let h;\n let g;\n let c;\n let tmp;\n const b = createArray(n);\n const z = createArray(n);\n\n const vtkROTATE = (aa, ii, jj, kk, ll) => {\n g = aa[ii][jj];\n h = aa[kk][ll];\n aa[ii][jj] = g - s * (h + g * tau);\n aa[kk][ll] = h + s * (g - h * tau);\n };\n\n // initialize\n for (ip = 0; ip < n; ip++) {\n for (iq = 0; iq < n; iq++) {\n v[ip][iq] = 0.0;\n }\n v[ip][ip] = 1.0;\n }\n for (ip = 0; ip < n; ip++) {\n b[ip] = w[ip] = a[ip][ip];\n z[ip] = 0.0;\n }\n\n // begin rotation sequence\n for (i = 0; i < VTK_MAX_ROTATIONS; i++) {\n sm = 0.0;\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n sm += Math.abs(a[ip][iq]);\n }\n }\n if (sm === 0.0) {\n break;\n }\n\n // first 3 sweeps\n if (i < 3) {\n tresh = 0.2 * sm / (n * n);\n } else {\n tresh = 0.0;\n }\n\n for (ip = 0; ip < n - 1; ip++) {\n for (iq = ip + 1; iq < n; iq++) {\n g = 100.0 * Math.abs(a[ip][iq]);\n\n // after 4 sweeps\n if (\n i > 3 &&\n Math.abs(w[ip]) + g === Math.abs(w[ip]) &&\n Math.abs(w[iq]) + g === Math.abs(w[iq])\n ) {\n a[ip][iq] = 0.0;\n } else if (Math.abs(a[ip][iq]) > tresh) {\n h = w[iq] - w[ip];\n if (Math.abs(h) + g === Math.abs(h)) {\n t = a[ip][iq] / h;\n } else {\n theta = 0.5 * h / a[ip][iq];\n t = 1.0 / (Math.abs(theta) + Math.sqrt(1.0 + theta * theta));\n if (theta < 0.0) {\n t = -t;\n }\n }\n c = 1.0 / Math.sqrt(1 + t * t);\n s = t * c;\n tau = s / (1.0 + c);\n h = t * a[ip][iq];\n z[ip] -= h;\n z[iq] += h;\n w[ip] -= h;\n w[iq] += h;\n a[ip][iq] = 0.0;\n\n // ip already shifted left by 1 unit\n for (j = 0; j <= ip - 1; j++) {\n vtkROTATE(a, j, ip, j, iq);\n }\n // ip and iq already shifted left by 1 unit\n for (j = ip + 1; j <= iq - 1; j++) {\n vtkROTATE(a, ip, j, j, iq);\n }\n // iq already shifted left by 1 unit\n for (j = iq + 1; j < n; j++) {\n vtkROTATE(a, ip, j, iq, j);\n }\n for (j = 0; j < n; j++) {\n vtkROTATE(v, j, ip, j, iq);\n }\n }\n }\n }\n\n for (ip = 0; ip < n; ip++) {\n b[ip] += z[ip];\n w[ip] = b[ip];\n z[ip] = 0.0;\n }\n }\n\n // this is NEVER called\n if (i >= VTK_MAX_ROTATIONS) {\n vtkWarningMacro('vtkMath::Jacobi: Error extracting eigenfunctions');\n return 0;\n }\n\n // sort eigenfunctions: these changes do not affect accuracy\n for (j = 0; j < n - 1; j++) {\n // boundary incorrect\n k = j;\n tmp = w[k];\n for (i = j + 1; i < n; i++) {\n // boundary incorrect, shifted already\n if (w[i] >= tmp) {\n // why exchange if same?\n k = i;\n tmp = w[k];\n }\n }\n if (k !== j) {\n w[k] = w[j];\n w[j] = tmp;\n for (i = 0; i < n; i++) {\n tmp = v[i][j];\n v[i][j] = v[i][k];\n v[i][k] = tmp;\n }\n }\n }\n // ensure eigenvector consistency (i.e., Jacobi can compute vectors that\n // are negative of one another (.707,.707,0) and (-.707,-.707,0). This can\n // reek havoc in hyperstreamline/other stuff. We will select the most\n // positive eigenvector.\n const ceil_half_n = (n >> 1) + (n & 1);\n for (j = 0; j < n; j++) {\n for (numPos = 0, i = 0; i < n; i++) {\n if (v[i][j] >= 0.0) {\n numPos++;\n }\n }\n // if ( numPos < ceil(double(n)/double(2.0)) )\n if (numPos < ceil_half_n) {\n for (i = 0; i < n; i++) {\n v[i][j] *= -1.0;\n }\n }\n }\n return 1;\n}\n\nfunction matrix3x3ToQuaternion(mat_3x3, quat_4) {\n const tmp = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];\n\n // on-diagonal elements\n tmp[0][0] = mat_3x3[0][0] + mat_3x3[1][1] + mat_3x3[2][2];\n tmp[1][1] = mat_3x3[0][0] - mat_3x3[1][1] - mat_3x3[2][2];\n tmp[2][2] = -mat_3x3[0][0] + mat_3x3[1][1] - mat_3x3[2][2];\n tmp[3][3] = -mat_3x3[0][0] - mat_3x3[1][1] + mat_3x3[2][2];\n\n // off-diagonal elements\n tmp[0][1] = tmp[1][0] = mat_3x3[2][1] - mat_3x3[1][2];\n tmp[0][2] = tmp[2][0] = mat_3x3[0][2] - mat_3x3[2][0];\n tmp[0][3] = tmp[3][0] = mat_3x3[1][0] - mat_3x3[0][1];\n\n tmp[1][2] = tmp[2][1] = mat_3x3[1][0] + mat_3x3[0][1];\n tmp[1][3] = tmp[3][1] = mat_3x3[0][2] + mat_3x3[2][0];\n tmp[2][3] = tmp[3][2] = mat_3x3[2][1] + mat_3x3[1][2];\n\n const eigenvectors = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];\n const eigenvalues = [0, 0, 0, 0];\n\n // convert into format that JacobiN can use,\n // then use Jacobi to find eigenvalues and eigenvectors\n const NTemp = [0, 0, 0, 0];\n const eigenvectorsTemp = [0, 0, 0, 0];\n for (let i = 0; i < 4; i++) {\n NTemp[i] = tmp[i];\n eigenvectorsTemp[i] = eigenvectors[i];\n }\n jacobiN(NTemp, 4, eigenvalues, eigenvectorsTemp);\n\n // the first eigenvector is the one we want\n quat_4[0] = eigenvectors[0][0];\n quat_4[1] = eigenvectors[1][0];\n quat_4[2] = eigenvectors[2][0];\n quat_4[3] = eigenvectors[3][0];\n}\n\nfunction multiplyQuaternion(quat_1, quat_2, quat_out) {\n const ww = quat_1[0] * quat_2[0];\n const wx = quat_1[0] * quat_2[1];\n const wy = quat_1[0] * quat_2[2];\n const wz = quat_1[0] * quat_2[3];\n\n const xw = quat_1[1] * quat_2[0];\n const xx = quat_1[1] * quat_2[1];\n const xy = quat_1[1] * quat_2[2];\n const xz = quat_1[1] * quat_2[3];\n\n const yw = quat_1[2] * quat_2[0];\n const yx = quat_1[2] * quat_2[1];\n const yy = quat_1[2] * quat_2[2];\n const yz = quat_1[2] * quat_2[3];\n\n const zw = quat_1[3] * quat_2[0];\n const zx = quat_1[3] * quat_2[1];\n const zy = quat_1[3] * quat_2[2];\n const zz = quat_1[3] * quat_2[3];\n\n quat_out[0] = ww - xx - yy - zz;\n quat_out[1] = wx + xw + yz - zy;\n quat_out[2] = wy - xz + yw + zx;\n quat_out[3] = wz + xy - yx + zw;\n}\n\nfunction orthogonalize3x3(a_3x3, out_3x3) {\n // copy the matrix\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = a_3x3[0][i];\n out_3x3[1][i] = a_3x3[1][i];\n out_3x3[2][i] = a_3x3[2][i];\n }\n\n // Pivot the matrix to improve accuracy\n const scale = createArray(3);\n const index = createArray(3);\n let largest;\n\n // Loop over rows to get implicit scaling information\n for (let i = 0; i < 3; i++) {\n const x1 = Math.abs(out_3x3[i][0]);\n const x2 = Math.abs(out_3x3[i][1]);\n const x3 = Math.abs(out_3x3[i][2]);\n largest = x2 > x1 ? x2 : x1;\n largest = x3 > largest ? x3 : largest;\n scale[i] = 1;\n if (largest !== 0) {\n scale[i] /= largest;\n }\n }\n\n // first column\n const x1 = Math.abs(out_3x3[0][0]) * scale[0];\n const x2 = Math.abs(out_3x3[1][0]) * scale[1];\n const x3 = Math.abs(out_3x3[2][0]) * scale[2];\n index[0] = 0;\n largest = x1;\n if (x2 >= largest) {\n largest = x2;\n index[0] = 1;\n }\n if (x3 >= largest) {\n index[0] = 2;\n }\n if (index[0] !== 0) {\n vtkSwapVectors3(out_3x3[index[0]], out_3x3[0]);\n scale[index[0]] = scale[0];\n }\n\n // second column\n const y2 = Math.abs(out_3x3[1][1]) * scale[1];\n const y3 = Math.abs(out_3x3[2][1]) * scale[2];\n index[1] = 1;\n largest = y2;\n if (y3 >= largest) {\n index[1] = 2;\n vtkSwapVectors3(out_3x3[2], out_3x3[1]);\n }\n\n // third column\n index[2] = 2;\n\n // A quaternion can only describe a pure rotation, not\n // a rotation with a flip, therefore the flip must be\n // removed before the matrix is converted to a quaternion.\n let flip = 0;\n if (determinant3x3(out_3x3) < 0) {\n flip = 1;\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = -out_3x3[0][i];\n out_3x3[1][i] = -out_3x3[1][i];\n out_3x3[2][i] = -out_3x3[2][i];\n }\n }\n\n // Do orthogonalization using a quaternion intermediate\n // (this, essentially, does the orthogonalization via\n // diagonalization of an appropriately constructed symmetric\n // 4x4 matrix rather than by doing SVD of the 3x3 matrix)\n const quat = createArray(4);\n matrix3x3ToQuaternion(out_3x3, quat);\n quaternionToMatrix3x3(quat, out_3x3);\n\n // Put the flip back into the orthogonalized matrix.\n if (flip) {\n for (let i = 0; i < 3; i++) {\n out_3x3[0][i] = -out_3x3[0][i];\n out_3x3[1][i] = -out_3x3[1][i];\n out_3x3[2][i] = -out_3x3[2][i];\n }\n }\n\n // Undo the pivoting\n if (index[1] !== 1) {\n vtkSwapVectors3(out_3x3[index[1]], out_3x3[1]);\n }\n if (index[0] !== 0) {\n vtkSwapVectors3(out_3x3[index[0]], out_3x3[0]);\n }\n}\n\nfunction diagonalize3x3(a_3x3, w_3, v_3x3) {\n let i;\n let j;\n let k;\n let maxI;\n let tmp;\n let maxVal;\n\n // do the matrix[3][3] to **matrix conversion for Jacobi\n const C = [createArray(3), createArray(3), createArray(3)];\n const ATemp = createArray(3);\n const VTemp = createArray(3);\n for (i = 0; i < 3; i++) {\n C[i][0] = a_3x3[i][0];\n C[i][1] = a_3x3[i][1];\n C[i][2] = a_3x3[i][2];\n ATemp[i] = C[i];\n VTemp[i] = v_3x3[i];\n }\n\n // diagonalize using Jacobi\n jacobiN(ATemp, 3, w_3, VTemp);\n\n // if all the eigenvalues are the same, return identity matrix\n if (w_3[0] === w_3[1] && w_3[0] === w_3[2]) {\n identity3x3(v_3x3);\n return;\n }\n\n // transpose temporarily, it makes it easier to sort the eigenvectors\n transpose3x3(v_3x3, v_3x3);\n\n // if two eigenvalues are the same, re-orthogonalize to optimally line\n // up the eigenvectors with the x, y, and z axes\n for (i = 0; i < 3; i++) {\n // two eigenvalues are the same\n if (w_3[(i + 1) % 3] === w_3[(i + 2) % 3]) {\n // find maximum element of the independent eigenvector\n maxVal = Math.abs(v_3x3[i][0]);\n maxI = 0;\n for (j = 1; j < 3; j++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i][j]))) {\n maxVal = tmp;\n maxI = j;\n }\n }\n // swap the eigenvector into its proper position\n if (maxI !== i) {\n tmp = w_3[maxI];\n w_3[maxI] = w_3[i];\n w_3[i] = tmp;\n vtkSwapVectors3(v_3x3[i], v_3x3[maxI]);\n }\n // maximum element of eigenvector should be positive\n if (v_3x3[maxI][maxI] < 0) {\n v_3x3[maxI][0] = -v_3x3[maxI][0];\n v_3x3[maxI][1] = -v_3x3[maxI][1];\n v_3x3[maxI][2] = -v_3x3[maxI][2];\n }\n\n // re-orthogonalize the other two eigenvectors\n j = (maxI + 1) % 3;\n k = (maxI + 2) % 3;\n\n v_3x3[j][0] = 0.0;\n v_3x3[j][1] = 0.0;\n v_3x3[j][2] = 0.0;\n v_3x3[j][j] = 1.0;\n cross(v_3x3[maxI], v_3x3[j], v_3x3[k]);\n normalize(v_3x3[k]);\n cross(v_3x3[k], v_3x3[maxI], v_3x3[j]);\n\n // transpose vectors back to columns\n transpose3x3(v_3x3, v_3x3);\n return;\n }\n }\n\n // the three eigenvalues are different, just sort the eigenvectors\n // to align them with the x, y, and z axes\n\n // find the vector with the largest x element, make that vector\n // the first vector\n maxVal = Math.abs(v_3x3[0][0]);\n maxI = 0;\n for (i = 1; i < 3; i++) {\n if (maxVal < (tmp = Math.abs(v_3x3[i][0]))) {\n maxVal = tmp;\n maxI = i;\n }\n }\n // swap eigenvalue and eigenvector\n if (maxI !== 0) {\n tmp = w_3[maxI];\n w_3[maxI] = w_3[0];\n w_3[0] = tmp;\n vtkSwapVectors3(v_3x3[maxI], v_3x3[0]);\n }\n // do the same for the y element\n if (Math.abs(v_3x3[1][1]) < Math.abs(v_3x3[2][1])) {\n tmp = w_3[2];\n w_3[2] = w_3[1];\n w_3[1] = tmp;\n vtkSwapVectors3(v_3x3[2], v_3x3[1]);\n }\n\n // ensure that the sign of the eigenvectors is correct\n for (i = 0; i < 2; i++) {\n if (v_3x3[i][i] < 0) {\n v_3x3[i][0] = -v_3x3[i][0];\n v_3x3[i][1] = -v_3x3[i][1];\n v_3x3[i][2] = -v_3x3[i][2];\n }\n }\n // set sign of final eigenvector to ensure that determinant is positive\n if (determinant3x3(v_3x3) < 0) {\n v_3x3[2][0] = -v_3x3[2][0];\n v_3x3[2][1] = -v_3x3[2][1];\n v_3x3[2][2] = -v_3x3[2][2];\n }\n\n // transpose the eigenvectors back again\n transpose3x3(v_3x3, v_3x3);\n}\n\nfunction singularValueDecomposition3x3(a_3x3, u_3x3, w_3, vT_3x3) {\n let i;\n const B = [createArray(3), createArray(3), createArray(3)];\n\n // copy so that A can be used for U or VT without risk\n for (i = 0; i < 3; i++) {\n B[0][i] = a_3x3[0][i];\n B[1][i] = a_3x3[1][i];\n B[2][i] = a_3x3[2][i];\n }\n\n // temporarily flip if determinant is negative\n const d = determinant3x3(B);\n if (d < 0) {\n for (i = 0; i < 3; i++) {\n B[0][i] = -B[0][i];\n B[1][i] = -B[1][i];\n B[2][i] = -B[2][i];\n }\n }\n\n // orthogonalize, diagonalize, etc.\n orthogonalize3x3(B, u_3x3);\n transpose3x3(B, B);\n multiply3x3_mat3(B, u_3x3, vT_3x3);\n diagonalize3x3(vT_3x3, w_3, vT_3x3);\n multiply3x3_mat3(u_3x3, vT_3x3, u_3x3);\n transpose3x3(vT_3x3, vT_3x3);\n\n // re-create the flip\n if (d < 0) {\n w_3[0] = -w_3[0];\n w_3[1] = -w_3[1];\n w_3[2] = -w_3[2];\n }\n}\n\nfunction luFactorLinearSystem(A, index, size) {\n let i;\n let j;\n let k;\n let largest;\n let maxI = 0;\n let sum;\n let temp1;\n let temp2;\n const scale = createArray(size);\n\n //\n // Loop over rows to get implicit scaling information\n //\n for (i = 0; i < size; i++) {\n for (largest = 0.0, j = 0; j < size; j++) {\n if ((temp2 = Math.abs(A[i][j])) > largest) {\n largest = temp2;\n }\n }\n\n if (largest === 0.0) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n scale[i] = 1.0 / largest;\n }\n //\n // Loop over all columns using Crout's method\n //\n for (j = 0; j < size; j++) {\n for (i = 0; i < j; i++) {\n sum = A[i][j];\n for (k = 0; k < i; k++) {\n sum -= A[i][k] * A[k][j];\n }\n A[i][j] = sum;\n }\n //\n // Begin search for largest pivot element\n //\n for (largest = 0.0, i = j; i < size; i++) {\n sum = A[i][j];\n for (k = 0; k < j; k++) {\n sum -= A[i][k] * A[k][j];\n }\n A[i][j] = sum;\n\n if ((temp1 = scale[i] * Math.abs(sum)) >= largest) {\n largest = temp1;\n maxI = i;\n }\n }\n //\n // Check for row interchange\n //\n if (j !== maxI) {\n for (k = 0; k < size; k++) {\n temp1 = A[maxI][k];\n A[maxI][k] = A[j][k];\n A[j][k] = temp1;\n }\n scale[maxI] = scale[j];\n }\n //\n // Divide by pivot element and perform elimination\n //\n index[j] = maxI;\n\n if (Math.abs(A[j][j]) <= VTK_SMALL_NUMBER) {\n vtkWarningMacro('Unable to factor linear system');\n return 0;\n }\n\n if (j !== size - 1) {\n temp1 = 1.0 / A[j][j];\n for (i = j + 1; i < size; i++) {\n A[i][j] *= temp1;\n }\n }\n }\n return 1;\n}\n\nfunction luSolveLinearSystem(A, index, x, size) {\n let i;\n let j;\n let ii;\n let idx;\n let sum;\n //\n // Proceed with forward and backsubstitution for L and U\n // matrices. First, forward substitution.\n //\n for (ii = -1, i = 0; i < size; i++) {\n idx = index[i];\n sum = x[idx];\n x[idx] = x[i];\n\n if (ii >= 0) {\n for (j = ii; j <= i - 1; j++) {\n sum -= A[i][j] * x[j];\n }\n } else if (sum !== 0.0) {\n ii = i;\n }\n\n x[i] = sum;\n }\n //\n // Now, back substitution\n //\n for (i = size - 1; i >= 0; i--) {\n sum = x[i];\n for (j = i + 1; j < size; j++) {\n sum -= A[i][j] * x[j];\n }\n x[i] = sum / A[i][i];\n }\n}\n\nfunction solveLinearSystem(A, x, size) {\n // if we solving something simple, just solve it\n if (size === 2) {\n const y = createArray(2);\n const det = determinant2x2(A[0][0], A[0][1], A[1][0], A[1][1]);\n\n if (det === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n y[0] = (A[1][1] * x[0] - A[0][1] * x[1]) / det;\n y[1] = (-(A[1][0] * x[0]) + A[0][0] * x[1]) / det;\n\n x[0] = y[0];\n x[1] = y[1];\n return 1;\n } else if (size === 1) {\n if (A[0][0] === 0.0) {\n // Unable to solve linear system\n return 0;\n }\n\n x[0] /= A[0][0];\n return 1;\n }\n\n //\n // System of equations is not trivial, use Crout's method\n //\n\n // Check on allocation of working vectors\n const index = createArray(size);\n\n // Factor and solve matrix\n if (luFactorLinearSystem(A, index, size) === 0) {\n return 0;\n }\n luSolveLinearSystem(A, index, x, size);\n\n return 1;\n}\n\nfunction invertMatrix(A, AI, size, index = null, column = null) {\n const tmp1Size = index || createArray(size);\n const tmp2Size = column || createArray(size);\n\n // Factor matrix; then begin solving for inverse one column at a time.\n // Note: tmp1Size returned value is used later, tmp2Size is just working\n // memory whose values are not used in LUSolveLinearSystem\n if (luFactorLinearSystem(A, tmp1Size, size, tmp2Size) === 0) {\n return 0;\n }\n\n for (let j = 0; j < size; j++) {\n for (let i = 0; i < size; i++) {\n tmp2Size[i] = 0.0;\n }\n tmp2Size[j] = 1.0;\n\n luSolveLinearSystem(A, tmp1Size, tmp2Size, size);\n\n for (let i = 0; i < size; i++) {\n AI[i][j] = tmp2Size[i];\n }\n }\n\n return 1;\n}\n\nfunction estimateMatrixCondition(A, size) {\n let minValue = +Number.MAX_VALUE;\n let maxValue = -Number.MAX_VALUE;\n\n // find the maximum value\n for (let i = 0; i < size; i++) {\n for (let j = i; j < size; j++) {\n if (Math.abs(A[i][j]) > max) {\n maxValue = Math.abs(A[i][j]);\n }\n }\n }\n\n // find the minimum diagonal value\n for (let i = 0; i < size; i++) {\n if (Math.abs(A[i][i]) < min) {\n minValue = Math.abs(A[i][i]);\n }\n }\n\n if (minValue === 0.0) {\n return Number.MAX_VALUE;\n }\n return maxValue / minValue;\n}\n\nfunction jacobi(a_3x3, w, v) {\n return jacobiN(a_3x3, 3, w, v);\n}\n\nfunction solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt) {\n // check dimensional consistency\n if (numberOfSamples < xOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n let i;\n let j;\n let k;\n\n // set up intermediate variables\n // Allocate matrix to hold X times transpose of X\n const XXt = createArray(xOrder); // size x by x\n // Allocate the array of eigenvalues and eigenvectors\n const eigenvals = createArray(xOrder);\n const eigenvecs = createArray(xOrder);\n\n // Clear the upper triangular region (and btw, allocate the eigenvecs as well)\n for (i = 0; i < xOrder; i++) {\n eigenvecs[i] = createArray(xOrder);\n XXt[i] = createArray(xOrder);\n for (j = 0; j < xOrder; j++) {\n XXt[i][j] = 0.0;\n }\n }\n\n // Calculate XXt upper half only, due to symmetry\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n for (j = i; j < xOrder; j++) {\n XXt[i][j] += xt[k][i] * xt[k][j];\n }\n }\n }\n\n // now fill in the lower half of the XXt matrix\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i][j] = XXt[j][i];\n }\n }\n\n // Compute the eigenvectors and eigenvalues\n jacobiN(XXt, xOrder, eigenvals, eigenvecs);\n\n // Smallest eigenval is at the end of the list (xOrder-1), and solution is\n // corresponding eigenvec.\n for (i = 0; i < xOrder; i++) {\n mt[i][0] = eigenvecs[i][xOrder - 1];\n }\n\n return 1;\n}\n\nfunction solveLeastSquares(\n numberOfSamples,\n xt,\n xOrder,\n yt,\n yOrder,\n mt,\n checkHomogeneous = true\n) {\n // check dimensional consistency\n if (numberOfSamples < xOrder || numberOfSamples < yOrder) {\n vtkWarningMacro('Insufficient number of samples. Underdetermined.');\n return 0;\n }\n\n const homogenFlags = createArray(yOrder);\n let allHomogeneous = 1;\n let hmt;\n let homogRC = 0;\n let i;\n let j;\n let k;\n let someHomogeneous = 0;\n\n // Ok, first init some flags check and see if all the systems are homogeneous\n if (checkHomogeneous) {\n // If Y' is zero, it's a homogeneous system and can't be solved via\n // the pseudoinverse method. Detect this case, warn the user, and\n // invoke SolveHomogeneousLeastSquares instead. Note that it doesn't\n // really make much sense for yOrder to be greater than one in this case,\n // since that's just yOrder occurrences of a 0 vector on the RHS, but\n // we allow it anyway. N\n\n // Initialize homogeneous flags on a per-right-hand-side basis\n for (j = 0; j < yOrder; j++) {\n homogenFlags[j] = 1;\n }\n for (i = 0; i < numberOfSamples; i++) {\n for (j = 0; j < yOrder; j++) {\n if (Math.abs(yt[i][j]) > VTK_SMALL_NUMBER) {\n allHomogeneous = 0;\n homogenFlags[j] = 0;\n }\n }\n }\n\n // If we've got one system, and it's homogeneous, do it and bail out quickly.\n if (allHomogeneous && yOrder === 1) {\n vtkWarningMacro(\n 'Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()'\n );\n return solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, mt);\n }\n\n // Ok, we've got more than one system of equations.\n // Figure out if we need to calculate the homogeneous equation solution for\n // any of them.\n if (allHomogeneous) {\n someHomogeneous = 1;\n } else {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n someHomogeneous = 1;\n }\n }\n }\n }\n\n // If necessary, solve the homogeneous problem\n if (someHomogeneous) {\n // hmt is the homogeneous equation version of mt, the general solution.\n hmt = createArray(xOrder);\n for (j = 0; j < xOrder; j++) {\n // Only allocate 1 here, not yOrder, because here we're going to solve\n // just the one homogeneous equation subset of the entire problem\n hmt[j] = [0];\n }\n\n // Ok, solve the homogeneous problem\n homogRC = solveHomogeneousLeastSquares(numberOfSamples, xt, xOrder, hmt);\n }\n\n // set up intermediate variables\n const XXt = createArray(xOrder); // size x by x\n const XXtI = createArray(xOrder); // size x by x\n const XYt = createArray(xOrder); // size x by y\n for (i = 0; i < xOrder; i++) {\n XXt[i] = createArray(xOrder);\n XXtI[i] = createArray(xOrder);\n\n for (j = 0; j < xOrder; j++) {\n XXt[i][j] = 0.0;\n XXtI[i][j] = 0.0;\n }\n\n XYt[i] = createArray(yOrder);\n for (j = 0; j < yOrder; j++) {\n XYt[i][j] = 0.0;\n }\n }\n\n // first find the pseudoinverse matrix\n for (k = 0; k < numberOfSamples; k++) {\n for (i = 0; i < xOrder; i++) {\n // first calculate the XXt matrix, only do the upper half (symmetrical)\n for (j = i; j < xOrder; j++) {\n XXt[i][j] += xt[k][i] * xt[k][j];\n }\n\n // now calculate the XYt matrix\n for (j = 0; j < yOrder; j++) {\n XYt[i][j] += xt[k][i] * yt[k][j];\n }\n }\n }\n\n // now fill in the lower half of the XXt matrix\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < i; j++) {\n XXt[i][j] = XXt[j][i];\n }\n }\n\n const successFlag = invertMatrix(XXt, XXtI, xOrder);\n\n // next get the inverse of XXt\n if (successFlag) {\n for (i = 0; i < xOrder; i++) {\n for (j = 0; j < yOrder; j++) {\n mt[i][j] = 0.0;\n for (k = 0; k < xOrder; k++) {\n mt[i][j] += XXtI[i][k] * XYt[k][j];\n }\n }\n }\n }\n\n // Fix up any of the solutions that correspond to the homogeneous equation\n // problem.\n if (someHomogeneous) {\n for (j = 0; j < yOrder; j++) {\n if (homogenFlags[j]) {\n // Fix this one\n for (i = 0; i < xOrder; i++) {\n mt[i][j] = hmt[i][0];\n }\n }\n }\n }\n\n if (someHomogeneous) {\n return homogRC && successFlag;\n }\n\n return successFlag;\n}\n\nfunction rgb2hsv(rgb, hsv) {\n let h;\n let s;\n const [r, g, b] = rgb;\n const onethird = 1.0 / 3.0;\n const onesixth = 1.0 / 6.0;\n const twothird = 2.0 / 3.0;\n\n let cmax = r;\n let cmin = r;\n\n if (g > cmax) {\n cmax = g;\n } else if (g < cmin) {\n cmin = g;\n }\n if (b > cmax) {\n cmax = b;\n } else if (b < cmin) {\n cmin = b;\n }\n const v = cmax;\n\n if (v > 0.0) {\n s = (cmax - cmin) / cmax;\n } else {\n s = 0.0;\n }\n if (s > 0) {\n if (r === cmax) {\n h = onesixth * (g - b) / (cmax - cmin);\n } else if (g === cmax) {\n h = onethird + onesixth * (b - r) / (cmax - cmin);\n } else {\n h = twothird + onesixth * (r - g) / (cmax - cmin);\n }\n if (h < 0.0) {\n h += 1.0;\n }\n } else {\n h = 0.0;\n }\n\n // Set the values back to the array\n hsv[0] = h;\n hsv[1] = s;\n hsv[2] = v;\n}\n\nfunction hsv2rgb(hsv, rgb) {\n const [h, s, v] = hsv;\n const onethird = 1.0 / 3.0;\n const onesixth = 1.0 / 6.0;\n const twothird = 2.0 / 3.0;\n const fivesixth = 5.0 / 6.0;\n let r;\n let g;\n let b;\n\n // compute RGB from HSV\n if (h > onesixth && h <= onethird) {\n // green/red\n g = 1.0;\n r = (onethird - h) / onesixth;\n b = 0.0;\n } else if (h > onethird && h <= 0.5) {\n // green/blue\n g = 1.0;\n b = (h - onethird) / onesixth;\n r = 0.0;\n } else if (h > 0.5 && h <= twothird) {\n // blue/green\n b = 1.0;\n g = (twothird - h) / onesixth;\n r = 0.0;\n } else if (h > twothird && h <= fivesixth) {\n // blue/red\n b = 1.0;\n r = (h - twothird) / onesixth;\n g = 0.0;\n } else if (h > fivesixth && h <= 1.0) {\n // red/blue\n r = 1.0;\n b = (1.0 - h) / onesixth;\n g = 0.0;\n } else {\n // red/green\n r = 1.0;\n g = h / onesixth;\n b = 0.0;\n }\n\n // add Saturation to the equation.\n r = s * r + (1.0 - s);\n g = s * g + (1.0 - s);\n b = s * b + (1.0 - s);\n\n r *= v;\n g *= v;\n b *= v;\n\n // Assign back to the array\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\n\nfunction lab2xyz(lab, xyz) {\n // LAB to XYZ\n const [L, a, b] = lab;\n let var_Y = (L + 16) / 116;\n let var_X = a / 500 + var_Y;\n let var_Z = var_Y - b / 200;\n\n if (var_Y ** 3 > 0.008856) {\n var_Y **= 3;\n } else {\n var_Y = (var_Y - 16.0 / 116.0) / 7.787;\n }\n\n if (var_X ** 3 > 0.008856) {\n var_X **= 3;\n } else {\n var_X = (var_X - 16.0 / 116.0) / 7.787;\n }\n\n if (var_Z ** 3 > 0.008856) {\n var_Z **= 3;\n } else {\n var_Z = (var_Z - 16.0 / 116.0) / 7.787;\n }\n const ref_X = 0.9505;\n const ref_Y = 1.0;\n const ref_Z = 1.089;\n xyz[0] = ref_X * var_X; // ref_X = 0.9505 Observer= 2 deg Illuminant= D65\n xyz[1] = ref_Y * var_Y; // ref_Y = 1.000\n xyz[2] = ref_Z * var_Z; // ref_Z = 1.089\n}\n\nfunction xyz2lab(xyz, lab) {\n const [x, y, z] = xyz;\n const ref_X = 0.9505;\n const ref_Y = 1.0;\n const ref_Z = 1.089;\n let var_X = x / ref_X; // ref_X = 0.9505 Observer= 2 deg, Illuminant= D65\n let var_Y = y / ref_Y; // ref_Y = 1.000\n let var_Z = z / ref_Z; // ref_Z = 1.089\n\n if (var_X > 0.008856) var_X **= 1.0 / 3.0;\n else var_X = 7.787 * var_X + 16.0 / 116.0;\n if (var_Y > 0.008856) var_Y **= 1.0 / 3.0;\n else var_Y = 7.787 * var_Y + 16.0 / 116.0;\n if (var_Z > 0.008856) var_Z **= 1.0 / 3.0;\n else var_Z = 7.787 * var_Z + 16.0 / 116.0;\n\n lab[0] = 116 * var_Y - 16;\n lab[1] = 500 * (var_X - var_Y);\n lab[2] = 200 * (var_Y - var_Z);\n}\n\nfunction xyz2rgb(xyz, rgb) {\n const [x, y, z] = xyz;\n let r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n let g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n let b = x * 0.0557 + y * -0.204 + z * 1.057;\n\n // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n if (r > 0.0031308) r = 1.055 * r ** (1 / 2.4) - 0.055;\n else r *= 12.92;\n if (g > 0.0031308) g = 1.055 * g ** (1 / 2.4) - 0.055;\n else g *= 12.92;\n if (b > 0.0031308) b = 1.055 * b ** (1 / 2.4) - 0.055;\n else b *= 12.92;\n\n // Clip colors. ideally we would do something that is perceptually closest\n // (since we can see colors outside of the display gamut), but this seems to\n // work well enough.\n let maxVal = r;\n if (maxVal < g) maxVal = g;\n if (maxVal < b) maxVal = b;\n if (maxVal > 1.0) {\n r /= maxVal;\n g /= maxVal;\n b /= maxVal;\n }\n if (r < 0) r = 0;\n if (g < 0) g = 0;\n if (b < 0) b = 0;\n\n // Push values back to array\n rgb[0] = r;\n rgb[1] = g;\n rgb[2] = b;\n}\n\nfunction rgb2xyz(rgb, xyz) {\n let [r, g, b] = rgb;\n // The following performs a \"gamma correction\" specified by the sRGB color\n // space. sRGB is defined by a canonical definition of a display monitor and\n // has been standardized by the International Electrotechnical Commission (IEC\n // 61966-2-1). The nonlinearity of the correction is designed to make the\n // colors more perceptually uniform. This color space has been adopted by\n // several applications including Adobe Photoshop and Microsoft Windows color\n // management. OpenGL is agnostic on its RGB color space, but it is reasonable\n // to assume it is close to this one.\n if (r > 0.04045) r = ((r + 0.055) / 1.055) ** 2.4;\n else r /= 12.92;\n if (g > 0.04045) g = ((g + 0.055) / 1.055) ** 2.4;\n else g /= 12.92;\n if (b > 0.04045) b = ((b + 0.055) / 1.055) ** 2.4;\n else b /= 12.92;\n\n // Observer. = 2 deg, Illuminant = D65\n xyz[0] = r * 0.4124 + g * 0.3576 + b * 0.1805;\n xyz[1] = r * 0.2126 + g * 0.7152 + b * 0.0722;\n xyz[2] = r * 0.0193 + g * 0.1192 + b * 0.9505;\n}\n\nfunction rgb2lab(rgb, lab) {\n const xyz = [0, 0, 0];\n rgb2xyz(rgb, xyz);\n xyz2lab(xyz, lab);\n}\n\nfunction lab2rgb(lab, rgb) {\n const xyz = [0, 0, 0];\n lab2xyz(lab, xyz);\n xyz2rgb(xyz, rgb);\n}\n\nfunction uninitializeBounds(bounds) {\n bounds[0] = 1.0;\n bounds[1] = -1.0;\n bounds[2] = 1.0;\n bounds[3] = -1.0;\n bounds[4] = 1.0;\n bounds[5] = -1.0;\n}\n\nfunction areBoundsInitialized(bounds) {\n return !(bounds[1] - bounds[0] < 0.0);\n}\n\nfunction clampValue(value, minValue, maxValue) {\n if (value < minValue) {\n return minValue;\n }\n if (value > maxValue) {\n return maxValue;\n }\n return value;\n}\n\nfunction clampAndNormalizeValue(value, range) {\n let result = 0;\n if (range[0] !== range[1]) {\n // clamp\n if (value < range[0]) {\n result = range[0];\n } else if (value > range[1]) {\n result = range[1];\n } else {\n result = value;\n }\n // normalize\n result = (result - range[0]) / (range[1] - range[0]);\n }\n\n return result;\n}\n\nconst getScalarTypeFittingRange = notImplemented('GetScalarTypeFittingRange');\nconst getAdjustedScalarRange = notImplemented('GetAdjustedScalarRange');\n\nfunction extentIsWithinOtherExtent(extent1, extent2) {\n if (!extent1 || !extent2) {\n return 0;\n }\n\n for (let i = 0; i < 6; i += 2) {\n if (\n extent1[i] < extent2[i] ||\n extent1[i] > extent2[i + 1] ||\n extent1[i + 1] < extent2[i] ||\n extent1[i + 1] > extent2[i + 1]\n ) {\n return 0;\n }\n }\n\n return 1;\n}\n\nfunction boundsIsWithinOtherBounds(bounds1_6, bounds2_6, delta_3) {\n if (!bounds1_6 || !bounds2_6) {\n return 0;\n }\n for (let i = 0; i < 6; i += 2) {\n if (\n bounds1_6[i] + delta_3[i / 2] < bounds2_6[i] ||\n bounds1_6[i] - delta_3[i / 2] > bounds2_6[i + 1] ||\n bounds1_6[i + 1] + delta_3[i / 2] < bounds2_6[i] ||\n bounds1_6[i + 1] - delta_3[i / 2] > bounds2_6[i + 1]\n ) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction pointIsWithinBounds(point_3, bounds_6, delta_3) {\n if (!point_3 || !bounds_6 || !delta_3) {\n return 0;\n }\n for (let i = 0; i < 3; i++) {\n if (\n point_3[i] + delta_3[i] < bounds_6[2 * i] ||\n point_3[i] - delta_3[i] > bounds_6[2 * i + 1]\n ) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction solve3PointCircle(p1, p2, p3, center) {\n const v21 = createArray(3);\n const v32 = createArray(3);\n const v13 = createArray(3);\n const v12 = createArray(3);\n const v23 = createArray(3);\n const v31 = createArray(3);\n\n for (let i = 0; i < 3; ++i) {\n v21[i] = p1[i] - p2[i];\n v32[i] = p2[i] - p3[i];\n v13[i] = p3[i] - p1[i];\n v12[i] = -v21[i];\n v23[i] = -v32[i];\n v31[i] = -v13[i];\n }\n\n const norm12 = norm(v12);\n const norm23 = norm(v23);\n const norm13 = norm(v13);\n\n const crossv21v32 = createArray(3);\n cross(v21, v32, crossv21v32);\n const normCross = norm(crossv21v32);\n\n const radius = norm12 * norm23 * norm13 / (2 * normCross);\n\n const normCross22 = 2 * normCross * normCross;\n const alpha = norm23 * norm23 * dot(v21, v31) / normCross22;\n const beta = norm13 * norm13 * dot(v12, v32) / normCross22;\n const gamma = norm12 * norm12 * dot(v13, v23) / normCross22;\n\n for (let i = 0; i < 3; ++i) {\n center[i] = alpha * p1[i] + beta * p2[i] + gamma * p3[i];\n }\n return radius;\n}\n\nconst inf = Infinity;\nconst negInf = -Infinity;\n\nconst isInf = (value) => !Number.isFinite(value);\nconst { isFinite, isNaN } = Number;\n\n// JavaScript - add-on ----------------------\n\nfunction createUninitializedBounds() {\n return [].concat([\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // X\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Y\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Z\n ]);\n}\n\n// ----------------------------------------------------------------------------\n// Only Static API\n// ----------------------------------------------------------------------------\n\nexport default {\n Pi,\n radiansFromDegrees,\n degreesFromRadians,\n round,\n floor,\n ceil,\n ceilLog2,\n min,\n max,\n isPowerOfTwo,\n nearestPowerOfTwo,\n factorial,\n binomial,\n beginCombination,\n nextCombination,\n randomSeed,\n getSeed,\n random,\n gaussian,\n add,\n subtract,\n multiplyScalar,\n multiplyScalar2D,\n dot,\n outer,\n cross,\n norm,\n normalize,\n perpendiculars,\n projectVector,\n projectVector2D,\n distance2BetweenPoints,\n angleBetweenVectors,\n gaussianAmplitude,\n gaussianWeight,\n dot2D,\n outer2D,\n norm2D,\n normalize2D,\n determinant2x2,\n LUFactor3x3,\n LUSolve3x3,\n linearSolve3x3,\n multiply3x3_vect3,\n multiply3x3_mat3,\n multiplyMatrix,\n transpose3x3,\n invert3x3,\n identity3x3,\n determinant3x3,\n quaternionToMatrix3x3,\n areMatricesEqual,\n matrix3x3ToQuaternion,\n multiplyQuaternion,\n orthogonalize3x3,\n diagonalize3x3,\n singularValueDecomposition3x3,\n solveLinearSystem,\n invertMatrix,\n luFactorLinearSystem,\n luSolveLinearSystem,\n estimateMatrixCondition,\n jacobi,\n jacobiN,\n solveHomogeneousLeastSquares,\n solveLeastSquares,\n rgb2hsv,\n hsv2rgb,\n lab2xyz,\n xyz2lab,\n xyz2rgb,\n rgb2xyz,\n rgb2lab,\n lab2rgb,\n uninitializeBounds,\n areBoundsInitialized,\n clampValue,\n clampAndNormalizeValue,\n getScalarTypeFittingRange,\n getAdjustedScalarRange,\n extentIsWithinOtherExtent,\n boundsIsWithinOtherBounds,\n pointIsWithinBounds,\n solve3PointCircle,\n inf,\n negInf,\n isInf,\n isNan: isNaN,\n isNaN,\n isFinite,\n\n // JS add-on\n createUninitializedBounds,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/Math/index.js","/**\n * @fileoverview gl-matrix - High performance matrix and vector operations\n * @author Brandon Jones\n * @author Colin MacKenzie IV\n * @version 2.3.0\n */\n\n/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n// END HEADER\n\nexports.glMatrix = require(\"./gl-matrix/common.js\");\nexports.mat2 = require(\"./gl-matrix/mat2.js\");\nexports.mat2d = require(\"./gl-matrix/mat2d.js\");\nexports.mat3 = require(\"./gl-matrix/mat3.js\");\nexports.mat4 = require(\"./gl-matrix/mat4.js\");\nexports.quat = require(\"./gl-matrix/quat.js\");\nexports.vec2 = require(\"./gl-matrix/vec2.js\");\nexports.vec3 = require(\"./gl-matrix/vec3.js\");\nexports.vec4 = require(\"./gl-matrix/vec4.js\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix.js\n// module id = 2\n// module chunks = 0","module.exports = girder_lib;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"girder_lib\"\n// module id = 3\n// module chunks = 0","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\nconst PASS_TYPES = ['Build', 'Render'];\n\n// ----------------------------------------------------------------------------\n// vtkViewNode methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNode(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkViewNode');\n\n // Builds myself.\n publicAPI.build = (prepass) => {};\n\n // Renders myself\n publicAPI.render = (prepass) => {};\n\n publicAPI.traverse = (renderPass) => {\n // we can choose to do special\n // traversal here based on pass\n const passTraversal = renderPass.getTraverseOperation();\n const fn = publicAPI[passTraversal];\n if (fn) {\n fn(renderPass);\n return;\n }\n\n // default traversal\n publicAPI.apply(renderPass, true);\n\n for (let index = 0; index < model.children.length; index++) {\n model.children[index].traverse(renderPass);\n }\n\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.apply = (renderPass, prepass) => {\n const customRenderPass = publicAPI[renderPass.getOperation()];\n if (customRenderPass) {\n customRenderPass(prepass, renderPass);\n }\n };\n\n publicAPI.getViewNodeFor = (dataObject) => {\n if (model.renderable === dataObject) {\n return publicAPI;\n }\n\n for (let index = 0; index < model.children.length; ++index) {\n const child = model.children[index];\n const vn = child.getViewNodeFor(dataObject);\n if (vn) {\n return vn;\n }\n }\n return undefined;\n };\n\n publicAPI.getFirstAncestorOfType = (type) => {\n if (!model.parent) {\n return null;\n }\n if (model.parent.isA(type)) {\n return model.parent;\n }\n return model.parent.getFirstAncestorOfType(type);\n };\n\n publicAPI.addMissingNode = (dobj) => {\n if (!dobj) {\n return;\n }\n const result = model.renderableChildMap.get(dobj);\n // if found just mark as visited\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n const newNode = publicAPI.createViewNode(dobj);\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n model.renderableChildMap.set(dobj, newNode);\n model.children.push(newNode);\n }\n }\n };\n\n publicAPI.addMissingNodes = (dataObjs) => {\n if (!dataObjs || !dataObjs.length) {\n return;\n }\n\n for (let index = 0; index < dataObjs.length; ++index) {\n const dobj = dataObjs[index];\n const result = model.renderableChildMap.get(dobj);\n // if found just mark as visited\n if (result !== undefined) {\n result.setVisited(true);\n } else {\n // otherwise create a node\n const newNode = publicAPI.createViewNode(dobj);\n if (newNode) {\n newNode.setParent(publicAPI);\n newNode.setVisited(true);\n model.renderableChildMap.set(dobj, newNode);\n model.children.push(newNode);\n }\n }\n }\n };\n\n publicAPI.prepareNodes = () => {\n for (let index = 0; index < model.children.length; ++index) {\n model.children[index].setVisited(false);\n }\n };\n\n publicAPI.setVisited = (val) => {\n model.visited = val;\n };\n\n publicAPI.removeUnusedNodes = () => {\n let deleted = null;\n for (let index = 0; index < model.children.length; ++index) {\n const child = model.children[index];\n const visited = child.getVisited();\n if (!visited) {\n const renderable = child.getRenderable();\n if (renderable) {\n model.renderableChildMap.delete(renderable);\n }\n if (!deleted) {\n deleted = [];\n }\n deleted.push(child);\n } else {\n child.setVisited(false);\n }\n }\n\n if (deleted) {\n // slow does alloc but not as common\n model.children = model.children.filter((el) => !deleted.includes(el));\n }\n };\n\n publicAPI.createViewNode = (dataObj) => {\n if (!model.myFactory) {\n vtkErrorMacro('Cannot create view nodes without my own factory');\n return null;\n }\n const ret = model.myFactory.createNode(dataObj);\n if (ret) {\n ret.setRenderable(dataObj);\n }\n return ret;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n parent: null,\n renderable: null,\n myFactory: null,\n children: [],\n visited: false,\n};\n\n// ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.event(publicAPI, model, 'event');\n\n model.renderableChildMap = new Map();\n\n macro.get(publicAPI, model, ['visited']);\n macro.setGet(publicAPI, model, ['parent', 'renderable', 'myFactory']);\n macro.getArray(publicAPI, model, ['children']);\n\n // Object methods\n vtkViewNode(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nconst newInstance = macro.newInstance(extend, 'vtkViewNode');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, PASS_TYPES };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/ViewNode/index.js","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 5\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Tag = daikon.Tag || ((typeof require !== 'undefined') ? require('./tag.js') : null);\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\ndaikon.Dictionary = daikon.Dictionary || ((typeof require !== 'undefined') ? require('./dictionary.js') : null);\ndaikon.Image = daikon.Image || ((typeof require !== 'undefined') ? require('./image.js') : null);\n\nvar pako = pako || ((typeof require !== 'undefined') ? require('pako') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Parser constructor.\n * @property {boolean} explicit\n * @property {boolean} littleEndian\n * @type {Function}\n */\ndaikon.Parser = daikon.Parser || function () {\n this.littleEndian = true;\n this.explicit = true;\n this.metaFound = false;\n this.metaFinished = false;\n this.metaFinishedOffset = -1;\n this.needsDeflate = false;\n this.inflated = null;\n this.encapsulation = false;\n this.level = 0;\n this.error = null;\n};\n\n\n/*** Static Fields ***/\n\n/**\n * Global property to output string representation of tags as they are parsed.\n * @type {boolean}\n */\ndaikon.Parser.verbose = false;\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Parser.MAGIC_COOKIE_OFFSET = 128;\ndaikon.Parser.MAGIC_COOKIE = [68, 73, 67, 77];\ndaikon.Parser.VRS = [\"AE\", \"AS\", \"AT\", \"CS\", \"DA\", \"DS\", \"DT\", \"FL\", \"FD\", \"IS\", \"LO\", \"LT\", \"OB\", \"OD\", \"OF\", \"OW\", \"PN\", \"SH\", \"SL\", \"SS\", \"ST\", \"TM\", \"UI\", \"UL\", \"UN\", \"US\", \"UT\", \"UC\"];\ndaikon.Parser.DATA_VRS = [\"OB\", \"OW\", \"OF\", \"SQ\", \"UT\", \"UN\", \"UC\"];\ndaikon.Parser.RAW_DATA_VRS = [\"OB\", \"OD\", \"OF\", \"OW\", \"UN\"];\ndaikon.Parser.TRANSFER_SYNTAX_IMPLICIT_LITTLE = \"1.2.840.10008.1.2\";\ndaikon.Parser.TRANSFER_SYNTAX_EXPLICIT_LITTLE = \"1.2.840.10008.1.2.1\";\ndaikon.Parser.TRANSFER_SYNTAX_EXPLICIT_BIG = \"1.2.840.10008.1.2.2\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG = \"1.2.840.10008.1.2.4\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LOSSLESS = \"1.2.840.10008.1.2.4.57\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LOSSLESS_SEL1 = \"1.2.840.10008.1.2.4.70\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_BASELINE_8BIT = \"1.2.840.10008.1.2.4.50\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_BASELINE_12BIT = \"1.2.840.10008.1.2.4.51\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LS_LOSSLESS = \"1.2.840.10008.1.2.4.80\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LS = \"1.2.840.10008.1.2.4.81\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_2000_LOSSLESS = \"1.2.840.10008.1.2.4.90\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_2000 = \"1.2.840.10008.1.2.4.91\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_RLE = \"1.2.840.10008.1.2.5\";\ndaikon.Parser.TRANSFER_SYNTAX_COMPRESSION_DEFLATE = \"1.2.840.10008.1.2.1.99\";\ndaikon.Parser.UNDEFINED_LENGTH = 0xFFFFFFFF;\n\n\n/*** Static Methods ***/\n\n/**\n * Returns true if the DICOM magic cookie is found.\n * @param {DataView} data\n * @returns {boolean}\n */\ndaikon.Parser.isMagicCookieFound = function (data) {\n var offset = daikon.Parser.MAGIC_COOKIE_OFFSET, magicCookieLength = daikon.Parser.MAGIC_COOKIE.length, ctr;\n\n for (ctr = 0; ctr < magicCookieLength; ctr += 1) {\n if (data.getUint8(offset + ctr) !== daikon.Parser.MAGIC_COOKIE[ctr]) {\n return false;\n }\n }\n\n return true;\n};\n\n\n/*** Prototype Methods ***/\n\n/**\n * Parses this data and returns an image object.\n * @param {DataView} data\n * @returns {daikon.Image|null}\n */\ndaikon.Parser.prototype.parse = function (data) {\n var image = null, offset, tag, copyMeta, copyDeflated;\n\n try {\n image = new daikon.Image();\n offset = this.findFirstTagOffset(data);\n tag = this.getNextTag(data, offset);\n\n while (tag !== null) {\n if (daikon.Parser.verbose) {\n console.log(tag.toString());\n }\n\n image.putTag(tag);\n\n if (tag.isPixelData()) {\n break;\n }\n\n if (this.needsDeflate && (tag.offsetEnd >= this.metaFinishedOffset)) {\n this.needsDeflate = false;\n copyMeta = data.buffer.slice(0, tag.offsetEnd);\n copyDeflated = data.buffer.slice(tag.offsetEnd);\n this.inflated = daikon.Utils.concatArrayBuffers(copyMeta, pako.inflateRaw(copyDeflated));\n data = new DataView(this.inflated);\n }\n\n tag = this.getNextTag(data, tag.offsetEnd);\n }\n } catch (err) {\n this.error = err;\n }\n\n if (image !== null) {\n image.littleEndian = this.littleEndian;\n }\n\n return image;\n};\n\n\n\ndaikon.Parser.prototype.parseEncapsulated = function (data) {\n var offset = 0, tag, tags = [];\n\n this.encapsulation = true;\n\n try {\n tag = this.getNextTag(data, offset);\n\n while (tag !== null) {\n if (tag.isSublistItem()) {\n tags.push(tag);\n }\n\n if (daikon.Parser.verbose) {\n console.log(tag.toString());\n }\n\n tag = this.getNextTag(data, tag.offsetEnd);\n }\n } catch (err) {\n this.error = err;\n\n }\n\n return tags;\n};\n\n\n\ndaikon.Parser.prototype.testForValidTag = function (data) {\n var offset, tag = null;\n\n try {\n offset = this.findFirstTagOffset(data);\n tag = this.getNextTag(data, offset, false);\n } catch (err) {\n this.error = err;\n }\n\n return tag;\n};\n\n\n\ndaikon.Parser.prototype.getNextTag = function (data, offset, testForTag) {\n var group = 0, element, value = null, offsetStart = offset, offsetValue, length = 0, little = true, vr = null, tag;\n\n if (offset >= data.byteLength) {\n return null;\n }\n\n if (this.metaFinished) {\n little = this.littleEndian;\n group = data.getUint16(offset, little);\n } else {\n group = data.getUint16(offset, true);\n\n if (((this.metaFinishedOffset !== -1) && (offset >= this.metaFinishedOffset)) || (group !== 0x0002)) {\n this.metaFinished = true;\n little = this.littleEndian;\n group = data.getUint16(offset, little);\n } else {\n little = true;\n }\n }\n\n if (!this.metaFound && (group === 0x0002)) {\n this.metaFound = true;\n }\n\n offset += 2;\n\n element = data.getUint16(offset, little);\n offset += 2;\n\n if (this.explicit || !this.metaFinished) {\n vr = daikon.Utils.getStringAt(data, offset, 2);\n\n if (!this.metaFound && this.metaFinished && (daikon.Parser.VRS.indexOf(vr) === -1)) {\n vr = daikon.Dictionary.getVR(group, element);\n length = data.getUint32(offset, little);\n offset += 4;\n this.explicit = false;\n } else {\n offset += 2;\n\n if (daikon.Parser.DATA_VRS.indexOf(vr) !== -1) {\n offset += 2; // skip two empty bytes\n\n length = data.getUint32(offset, little);\n offset += 4;\n } else {\n length = data.getUint16(offset, little);\n offset += 2;\n }\n }\n } else {\n vr = daikon.Dictionary.getVR(group, element);\n length = data.getUint32(offset, little);\n\n if (length === daikon.Parser.UNDEFINED_LENGTH) {\n vr = 'SQ';\n }\n\n offset += 4;\n }\n\n offsetValue = offset;\n\n var isPixelData = ((group === daikon.Tag.TAG_PIXEL_DATA[0]) && (element === daikon.Tag.TAG_PIXEL_DATA[1]));\n /*\n color lookup data will be in (0028,12XX), so don't try to treat these as a sublist even though it can look like a list. Example:\n (0028,1201) OW 0000\\ffff\\ffff\\0000\\ffff\\ffff\\0000\\cccc\\0000\\0000\\1e1e\\0000\\0101... # 512, 1 RedPaletteColorLookupTableData\n (0028,1202) OW 0000\\ffff\\0000\\ffff\\8080\\3333\\ffff\\b3b3\\0000\\0000\\1e1e\\0000\\0101... # 512, 1 GreenPaletteColorLookupTableData\n (0028,1203) OW 0000\\0000\\ffff\\ffff\\0000\\4d4d\\0000\\0000\\0000\\0000\\1e1e\\0000\\0101... # 512, 1 BluePaletteColorLookupTableData\n */\n var isLookupTableData = 0x0028 === group && element>= 0x1201 && element<0x1300;\n \n if ((vr === 'SQ') || (!isLookupTableData && !isPixelData && !this.encapsulation && (daikon.Parser.DATA_VRS.indexOf(vr) !== -1) && (vr !== 'UC'))) {\n value = this.parseSublist(data, offset, length, vr !== 'SQ');\n\n if (length === daikon.Parser.UNDEFINED_LENGTH) {\n length = value[value.length - 1].offsetEnd - offset;\n }\n } else if ((length > 0) && !testForTag) {\n if (length === daikon.Parser.UNDEFINED_LENGTH) {\n if (isPixelData) {\n length = (data.byteLength - offset);\n }\n }\n\n value = data.buffer.slice(offset, offset + length);\n }\n\n offset += length;\n tag = new daikon.Tag(group, element, vr, value, offsetStart, offsetValue, offset, this.littleEndian);\n\n if (tag.isTransformSyntax() && !this.transformSyntaxAlreadyExist) {\n // 传输语法已存在\n this.transformSyntaxAlreadyExist = true;\n if (tag.value[0] === daikon.Parser.TRANSFER_SYNTAX_IMPLICIT_LITTLE) {\n this.explicit = false;\n this.littleEndian = true;\n } else if (tag.value[0] === daikon.Parser.TRANSFER_SYNTAX_EXPLICIT_BIG) {\n this.explicit = true;\n this.littleEndian = false;\n } else if (tag.value[0] === daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_DEFLATE) {\n this.needsDeflate = true;\n this.explicit = true;\n this.littleEndian = true;\n } else {\n this.explicit = true;\n this.littleEndian = true;\n }\n } else if (tag.isMetaLength()) {\n this.metaFinishedOffset = tag.value[0] + offset;\n }\n\n return tag;\n};\n\n\n\ndaikon.Parser.prototype.parseSublist = function (data, offset, length, raw) {\n var sublistItem,\n offsetEnd = offset + length,\n tags = [];\n\n this.level++;\n\n if (length === daikon.Parser.UNDEFINED_LENGTH) {\n sublistItem = this.parseSublistItem(data, offset, raw);\n\n while (!sublistItem.isSequenceDelim()) {\n tags.push(sublistItem);\n offset = sublistItem.offsetEnd;\n sublistItem = this.parseSublistItem(data, offset, raw);\n }\n\n tags.push(sublistItem);\n } else {\n while (offset < offsetEnd) {\n sublistItem = this.parseSublistItem(data, offset, raw);\n tags.push(sublistItem);\n offset = sublistItem.offsetEnd;\n }\n }\n\n this.level--;\n\n return tags;\n};\n\n\n\ndaikon.Parser.prototype.parseSublistItem = function (data, offset, raw) {\n var group, element, length, offsetEnd, tag, offsetStart = offset, value = null, offsetValue, sublistItemTag, tags = [];\n\n group = data.getUint16(offset, this.littleEndian);\n offset += 2;\n\n element = data.getUint16(offset, this.littleEndian);\n offset += 2;\n\n length = data.getUint32(offset, this.littleEndian);\n offset += 4;\n\n offsetValue = offset;\n\n if (length === daikon.Parser.UNDEFINED_LENGTH) {\n tag = this.getNextTag(data, offset);\n\n while (tag && !tag.isSublistItemDelim()) {\n tags.push(tag);\n offset = tag.offsetEnd;\n tag = this.getNextTag(data, offset);\n }\n\n tag && tags.push(tag);\n tag && (offset = tag.offsetEnd);\n } else if (raw) {\n value = data.buffer.slice(offset, offset + length);\n offset = offset + length;\n } else {\n offsetEnd = offset + length;\n\n while (offset < offsetEnd) {\n tag = this.getNextTag(data, offset);\n tags.push(tag);\n offset = tag.offsetEnd;\n }\n }\n\n sublistItemTag = new daikon.Tag(group, element, null, value || tags, offsetStart, offsetValue, offset, this.littleEndian);\n\n return sublistItemTag;\n};\n\n\n\ndaikon.Parser.prototype.findFirstTagOffset = function (data) {\n var offset = 0,\n magicCookieLength = daikon.Parser.MAGIC_COOKIE.length,\n searchOffsetMax = daikon.Parser.MAGIC_COOKIE_OFFSET * 5,\n found = false,\n ctr = 0,\n ctrIn = 0,\n ch = 0;\n\n if (daikon.Parser.isMagicCookieFound(data)) {\n offset = daikon.Parser.MAGIC_COOKIE_OFFSET + magicCookieLength;\n } else {\n for (ctr = 0; ctr < searchOffsetMax; ctr += 1) {\n ch = data.getUint8(ctr);\n if (ch === daikon.Parser.MAGIC_COOKIE[0]) {\n found = true;\n for (ctrIn = 1; ctrIn < magicCookieLength; ctrIn += 1) {\n if (data.getUint8(ctr + ctrIn) !== daikon.Parser.MAGIC_COOKIE[ctrIn]) {\n found = false;\n }\n }\n\n if (found) {\n offset = ctr + magicCookieLength;\n break;\n }\n }\n }\n }\n\n return offset;\n};\n\n\n\ndaikon.Parser.prototype.hasError = function () {\n return (this.error !== null);\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Parser;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/parser.js\n// module id = 6\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\n/**\n * @class Common utilities\n * @name glMatrix\n */\nvar glMatrix = {};\n\n// Constants\nglMatrix.EPSILON = 0.000001;\nglMatrix.ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;\nglMatrix.RANDOM = Math.random;\n\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Type} type Array type, such as Float32Array or Array\n */\nglMatrix.setMatrixArrayType = function(type) {\n GLMAT_ARRAY_TYPE = type;\n}\n\nvar degree = Math.PI / 180;\n\n/**\n* Convert Degree To Radian\n*\n* @param {Number} Angle in Degrees\n*/\nglMatrix.toRadian = function(a){\n return a * degree;\n}\n\nmodule.exports = glMatrix;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/common.js\n// module id = 7\n// module chunks = 0","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/utils/common.js\n// module id = 8\n// module chunks = 0","import macro from 'vtk.js/Sources/macro';\nimport vtkShader from 'vtk.js/Sources/Rendering/OpenGL/Shader';\n\nconst { vtkErrorMacro } = macro;\n\n// perform in place string substitutions, indicate if a substitution was done\n// this is useful for building up shader strings which typically involve\n// lots of string substitutions. Return true if a substitution was done.\nfunction substitute(source, search, replace, all = true) {\n const replaceStr = Array.isArray(replace) ? replace.join('\\n') : replace;\n let replaced = false;\n if (source.search(search) !== -1) {\n replaced = true;\n }\n let gflag = '';\n if (all) {\n gflag = 'g';\n }\n const regex = new RegExp(search, gflag);\n const resultstr = source.replace(regex, replaceStr);\n return { replace: replaced, result: resultstr };\n}\n\n// ----------------------------------------------------------------------------\n// vtkShaderProgram methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShaderProgram(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShaderProgram');\n\n publicAPI.compileShader = () => {\n if (!model.vertexShader.compile()) {\n vtkErrorMacro(\n model.vertexShader\n .getSource()\n .split('\\n')\n .map((line, index) => `${index}: ${line}`)\n .join('\\n')\n );\n vtkErrorMacro(model.vertexShader.getError());\n return 0;\n }\n if (!model.fragmentShader.compile()) {\n vtkErrorMacro(\n model.fragmentShader\n .getSource()\n .split('\\n')\n .map((line, index) => `${index}: ${line}`)\n .join('\\n')\n );\n vtkErrorMacro(model.fragmentShader.getError());\n return 0;\n }\n // skip geometry for now\n if (!publicAPI.attachShader(model.vertexShader)) {\n vtkErrorMacro(model.error);\n return 0;\n }\n if (!publicAPI.attachShader(model.fragmentShader)) {\n vtkErrorMacro(model.error);\n return 0;\n }\n\n if (!publicAPI.link()) {\n vtkErrorMacro(`Links failed: ${model.error}`);\n return 0;\n }\n\n publicAPI.setCompiled(true);\n return 1;\n };\n\n publicAPI.cleanup = () => {\n if (model.shaderType === 'Unknown' || model.handle === 0) {\n return;\n }\n\n model.context.deleteShader(model.handle);\n model.handle = 0;\n };\n\n publicAPI.bind = () => {\n if (!model.linked && !model.link()) {\n return false;\n }\n\n model.context.useProgram(model.handle);\n publicAPI.setBound(true);\n return true;\n };\n\n publicAPI.isBound = () => !!model.bound;\n\n publicAPI.release = () => {\n model.context.useProgram(null);\n publicAPI.setBound(false);\n };\n\n publicAPI.setContext = (ctx) => {\n model.vertexShader.setContext(ctx);\n model.fragmentShader.setContext(ctx);\n model.geometryShader.setContext(ctx);\n };\n\n publicAPI.link = () => {\n if (model.inked) {\n return true;\n }\n\n if (model.handle === 0) {\n model.error =\n 'Program has not been initialized, and/or does not have shaders.';\n return false;\n }\n\n // clear out the list of uniforms used\n model.uniformLocs = {};\n\n model.context.linkProgram(model.handle);\n const isCompiled = model.context.getProgramParameter(\n model.handle,\n model.context.LINK_STATUS\n );\n if (!isCompiled) {\n const lastError = model.context.getProgramInfoLog(model.handle);\n vtkErrorMacro(`Error linking shader ${lastError}`);\n model.handle = 0;\n return false;\n }\n\n publicAPI.setLinked(true);\n model.attributeLocs = {};\n return true;\n };\n\n publicAPI.setUniformMatrix = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniformMatrix4fv(location, false, v);\n return true;\n };\n\n publicAPI.setUniformMatrix3x3 = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniformMatrix3fv(location, false, v);\n return true;\n };\n\n publicAPI.setUniformf = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1f(location, v);\n return true;\n };\n\n publicAPI.setUniformfv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1fv(location, v);\n return true;\n };\n\n publicAPI.setUniformi = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1i(location, v);\n return true;\n };\n\n publicAPI.setUniformiv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform1iv(location, v);\n return true;\n };\n\n publicAPI.setUniform2f = (name, v1, v2) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (v2 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform2f(location, v1, v2);\n return true;\n };\n\n publicAPI.setUniform2fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform2fv(location, v);\n return true;\n };\n\n publicAPI.setUniform2i = (name, v1, v2) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (v2 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform2i(location, v1, v2);\n return true;\n };\n\n publicAPI.setUniform2iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform2iv(location, v);\n return true;\n };\n\n publicAPI.setUniform3f = (name, a1, a2, a3) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (a3 === undefined) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3f(location, a1, a2, a3);\n return true;\n };\n\n publicAPI.setUniform3fArray = (name, a) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n if (!Array.isArray(a) || a.length !== 3) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3f(location, a[0], a[1], a[2]);\n return true;\n };\n\n publicAPI.setUniform3fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform3fv(location, v);\n return true;\n };\n\n publicAPI.setUniform3i = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 3) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform3i(location, array[0], array[1], array[2]);\n return true;\n };\n\n publicAPI.setUniform3iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform3iv(location, v);\n return true;\n };\n\n publicAPI.setUniform4f = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 4) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform4f(location, array[0], array[1], array[2], array[3]);\n return true;\n };\n\n publicAPI.setUniform4fv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4fv(location, v);\n return true;\n };\n\n publicAPI.setUniform4i = (name, ...args) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n let array = args;\n // allow an array passed as a single argument\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n if (array.length !== 4) {\n throw new RangeError('Invalid number of values for array');\n }\n model.context.uniform4i(location, array[0], array[1], array[2], array[3]);\n return true;\n };\n\n publicAPI.setUniform4iv = (name, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4iv(location, v);\n return true;\n };\n\n publicAPI.setUniform4fv = (name, count, v) => {\n const location = publicAPI.findUniform(name);\n if (location === -1) {\n model.error = `Could not set uniform ${name} . No such uniform.`;\n return false;\n }\n model.context.uniform4fv(location, v);\n return true;\n };\n\n publicAPI.findUniform = (name) => {\n if (!name || !model.linked) {\n return -1;\n }\n\n // see if we have cached the result\n let loc = model.uniformLocs[name];\n if (loc !== undefined) {\n return loc;\n }\n\n loc = model.context.getUniformLocation(model.handle, name);\n if (loc === null) {\n model.error = `Uniform ${name} not found in current shader program.`;\n model.uniformLocs[name] = -1;\n return -1;\n }\n\n model.uniformLocs[name] = loc;\n return loc;\n };\n\n publicAPI.isUniformUsed = (name) => {\n if (!name) {\n return false;\n }\n\n // see if we have cached the result\n let loc = model.uniformLocs[name];\n if (loc !== undefined) {\n return loc !== null;\n }\n\n if (!model.linked) {\n vtkErrorMacro(\n 'attempt to find uniform when the shader program is not linked'\n );\n return false;\n }\n\n loc = model.context.getUniformLocation(model.handle, name);\n model.uniformLocs[name] = loc;\n\n if (loc === null) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.isAttributeUsed = (name) => {\n if (!name) {\n return false;\n }\n\n // see if we have cached the result\n let loc = Object.keys(model.attributeLocs).indexOf(name);\n if (loc !== -1) {\n return true;\n }\n\n if (!model.linked) {\n vtkErrorMacro(\n 'attempt to find uniform when the shader program is not linked'\n );\n return false;\n }\n\n loc = model.context.getAttribLocation(model.handle, name);\n if (loc === -1) {\n return false;\n }\n model.attributeLocs[name] = loc;\n\n return true;\n };\n\n publicAPI.attachShader = (shader) => {\n if (shader.getHandle() === 0) {\n model.error = 'Shader object was not initialized, cannot attach it.';\n return false;\n }\n if (shader.getShaderType() === 'Unknown') {\n model.error = 'Shader object is of type Unknown and cannot be used.';\n return false;\n }\n\n if (model.handle === 0) {\n const thandle = model.context.createProgram();\n if (thandle === 0) {\n model.error = 'Could not create shader program.';\n return false;\n }\n model.handle = thandle;\n model.linked = false;\n }\n\n if (shader.getShaderType() === 'Vertex') {\n if (model.vertexShaderHandle !== 0) {\n model.comntext.detachShader(model.handle, model.vertexShaderHandle);\n }\n model.vertexShaderHandle = shader.getHandle();\n }\n if (shader.getShaderType() === 'Fragment') {\n if (model.fragmentShaderHandle !== 0) {\n model.context.detachShader(model.handle, model.fragmentShaderHandle);\n }\n model.fragmentShaderHandle = shader.getHandle();\n }\n\n model.context.attachShader(model.handle, shader.getHandle());\n publicAPI.setLinked(false);\n return true;\n };\n\n publicAPI.detachShader = (shader) => {\n if (shader.getHandle() === 0) {\n model.error = 'shader object was not initialized, cannot attach it.';\n return false;\n }\n if (shader.getShaderType() === 'Unknown') {\n model.error = 'Shader object is of type Unknown and cannot be used.';\n return false;\n }\n if (model.handle === 0) {\n model.errror = 'This shader prorgram has not been initialized yet.';\n }\n\n switch (shader.getShaderType()) {\n case 'Vertex':\n if (model.vertexShaderHandle !== shader.getHandle()) {\n model.error = 'The supplied shader was not attached to this program.';\n return false;\n }\n model.context.detachShader(model.handle, shader.getHandle());\n model.vertexShaderHandle = 0;\n model.linked = false;\n return true;\n case 'Fragment':\n if (model.fragmentShaderHandle !== shader.getHandle()) {\n model.error = 'The supplied shader was not attached to this program.';\n return false;\n }\n model.context.detachShader(model.handle, shader.getHandle());\n model.fragmentShaderHandle = 0;\n model.linked = false;\n return true;\n default:\n return false;\n }\n };\n\n publicAPI.setContext = (ctx) => {\n model.context = ctx;\n model.vertexShader.setContext(ctx);\n model.fragmentShader.setContext(ctx);\n model.geometryShader.setContext(ctx);\n };\n\n publicAPI.setLastCameraMTime = (mtime) => {\n model.lastCameraMTime = mtime;\n };\n\n // publicAPI.enableAttributeArray = (name) => {\n // const location = publicAPI.findAttributeArray(name);\n // if (location === -1) {\n // model.error = `Could not enable attribute ${name} No such attribute.`;\n // return false;\n // }\n // model.context.enableVertexAttribArray(location);\n // return true;\n // };\n\n // publicAPI.disableAttributeArray = (name) => {\n // const location = publicAPI.findAttributeArray(name);\n // if (location === -1) {\n // model.error = `Could not enable attribute ${name} No such attribute.`;\n // return false;\n // }\n // model.context.disableVertexAttribArray(location);\n // return true;\n // };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n vertexShaderHandle: 0,\n fragmentShaderHandle: 0,\n geometryShaderHandle: 0,\n vertexShader: null,\n fragmentShader: null,\n geometryShader: null,\n\n linked: false,\n bound: false,\n compiled: false,\n error: '',\n handle: 0,\n numberOfOutputs: 0,\n attributesLocs: null,\n uniformLocs: null,\n md5Hash: 0,\n context: null,\n lastCameraMTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nfunction extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Instanciate internal objects\n model.attributesLocs = {};\n model.uniformLocs = {};\n model.vertexShader = vtkShader.newInstance();\n model.vertexShader.setShaderType('Vertex');\n model.fragmentShader = vtkShader.newInstance();\n model.fragmentShader.setShaderType('Fragment');\n model.geometryShader = vtkShader.newInstance();\n model.geometryShader.setShaderType('Geometry');\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['lastCameraMTime']);\n macro.setGet(publicAPI, model, [\n 'error',\n 'handle',\n 'compiled',\n 'bound',\n 'md5Hash',\n 'vertexShader',\n 'fragmentShader',\n 'geometryShader',\n 'linked',\n ]);\n\n // Object methods\n vtkShaderProgram(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nconst newInstance = macro.newInstance(extend, 'vtkShaderProgram');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, substitute };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ShaderProgram/index.js","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Utils = daikon.Utils || {};\n\n\ndaikon.Utils.crcTable = null;\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Utils.MAX_VALUE = 9007199254740991;\ndaikon.Utils.MIN_VALUE = -9007199254740991;\n\n\n\n/*** Static methods ***/\n\ndaikon.Utils.dec2hex = function (i) {\n return (i + 0x10000).toString(16).substr(-4).toUpperCase();\n};\n\n\n\n// http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript\ndaikon.Utils.createArray = function (length) {\n var arr = new Array(length || 0),\n i = length;\n\n if (arguments.length > 1) {\n var args = Array.prototype.slice.call(arguments, 1);\n while(i--) arr[length-1 - i] = daikon.Utils.createArray.apply(this, args);\n }\n\n return arr;\n};\n\n\ndaikon.Utils.getStringAt = function (dataview, start, length) {\n var str = \"\", ctr, ch;\n\n for (ctr = 0; ctr < length; ctr += 1) {\n ch = dataview.getUint8(start + ctr);\n\n if (ch !== 0) {\n str += String.fromCharCode(ch);\n }\n }\n\n return str;\n};\n\n\n\ndaikon.Utils.trim = function (str) {\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n};\n\n\n\ndaikon.Utils.stripLeadingZeros = function (str) {\n return str.replace(/^[0]+/g, \"\");\n};\n\n\n\ndaikon.Utils.safeParseInt = function (str) {\n str = daikon.Utils.stripLeadingZeros(str);\n if (str.length > 0) {\n return parseInt(str, 10);\n }\n\n return 0;\n};\n\n\n\ndaikon.Utils.convertCamcelCaseToTitleCase = function (str) {\n var result = str.replace(/([A-Z][a-z])/g, \" $1\");\n return daikon.Utils.trim(result.charAt(0).toUpperCase() + result.slice(1));\n};\n\n\n\ndaikon.Utils.safeParseFloat = function (str) {\n str = daikon.Utils.stripLeadingZeros(str);\n if (str.length > 0) {\n return parseFloat(str);\n }\n\n return 0;\n};\n\n\n// http://stackoverflow.com/questions/8361086/convert-byte-array-to-numbers-in-javascript\ndaikon.Utils.bytesToDouble = function (data) {\n var sign = (data[0] & 1<<7)>>7;\n\n var exponent = (((data[0] & 127) << 4) | (data[1]&(15<<4))>>4);\n\n if(exponent == 0) return 0;\n if(exponent == 0x7ff) return (sign) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n var mul = Math.pow(2,exponent - 1023 - 52);\n var mantissa = data[7]+\n data[6]*Math.pow(2,8)+\n data[5]*Math.pow(2,8*2)+\n data[4]*Math.pow(2,8*3)+\n data[3]*Math.pow(2,8*4)+\n data[2]*Math.pow(2,8*5)+\n (data[1]&15)*Math.pow(2,8*6)+\n Math.pow(2,52);\n\n return Math.pow(-1,sign)*mantissa*mul;\n};\n\n\n\ndaikon.Utils.concatArrayBuffers = function (buffer1, buffer2) {\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n};\n\n\n\ndaikon.Utils.concatArrayBuffers2 = function (buffers) {\n var length = 0, offset = 0, ctr;\n\n for (ctr = 0; ctr < buffers.length; ctr += 1) {\n length += buffers[ctr].byteLength;\n }\n\n var tmp = new Uint8Array(length);\n\n for (ctr = 0; ctr < buffers.length; ctr += 1) {\n tmp.set(new Uint8Array(buffers[ctr]), offset);\n offset += buffers[ctr].byteLength;\n\n }\n\n return tmp.buffer;\n};\n\n\n\ndaikon.Utils.fillBuffer = function (array, buffer, offset, numBytes) {\n var ctr;\n\n if (numBytes === 1) {\n for (ctr = 0; ctr < array.length; ctr+=1) {\n buffer.setUint8(offset + ctr, array[ctr]);\n }\n } else if (numBytes === 2) {\n for (ctr = 0; ctr < array.length; ctr+=1) {\n buffer.setUint16(offset + (ctr * 2), array[ctr], true);\n }\n }\n};\n\n\n\ndaikon.Utils.fillBufferRGB = function (array, buffer, offset) {\n var r, g, b, ctr, numElements = (parseInt(array.length / 3));\n\n for (ctr = 0; ctr < numElements; ctr+=1) {\n r = array[ctr * 3];\n g = array[ctr * 3 + 1];\n b = array[ctr * 3 + 2];\n\n buffer.setUint8(offset + ctr, parseInt((r + b + g) / 3), true);\n }\n};\n\n\n\ndaikon.Utils.bind = function (scope, fn, args, appendArgs) {\n if (arguments.length === 2) {\n return function () {\n return fn.apply(scope, arguments);\n };\n }\n\n var method = fn,\n slice = Array.prototype.slice;\n\n return function () {\n var callArgs = args || arguments;\n\n if (appendArgs === true) {\n callArgs = slice.call(arguments, 0);\n callArgs = callArgs.concat(args);\n } else if (typeof appendArgs === 'number') {\n callArgs = slice.call(arguments, 0); // copy arguments first\n Ext.Array.insert(callArgs, appendArgs, args);\n }\n\n return method.apply(scope || window, callArgs);\n };\n};\n\n\n\ndaikon.Utils.toArrayBuffer = function (buffer) {\n var ab, view, i;\n\n ab = new ArrayBuffer(buffer.length);\n view = new Uint8Array(ab);\n for (i = 0; i < buffer.length; i += 1) {\n view[i] = buffer[i];\n }\n return ab;\n};\n\n\n\n// http://stackoverflow.com/questions/203739/why-does-instanceof-return-false-for-some-literals\ndaikon.Utils.isString = function (s) {\n return typeof(s) === 'string' || s instanceof String;\n};\n\n\n\n// http://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript\ndaikon.Utils.isValidDate = function(d) {\n if (Object.prototype.toString.call(d) === \"[object Date]\") {\n if (isNaN(d.getTime())) {\n return false;\n } else {\n return true;\n }\n } else {\n return false;\n }\n};\n\n\n\ndaikon.Utils.swap32 = function (val) {\n /*jslint bitwise: true */\n return ((val & 0xFF) << 24) | ((val & 0xFF00) << 8) | ((val >> 8) & 0xFF00) | ((val >> 24) & 0xFF);\n};\n\n\n\ndaikon.Utils.swap16 = function (val) {\n /*jslint bitwise: true */\n return ((((val & 0xFF) << 8) | ((val >> 8) & 0xFF)) << 16) >> 16; // since JS uses 32-bit when bit shifting\n};\n\n\n// http://stackoverflow.com/questions/18638900/javascript-crc32\ndaikon.Utils.makeCRCTable = function(){\n var c;\n var crcTable = [];\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n crcTable[n] = c;\n }\n return crcTable;\n};\n\ndaikon.Utils.crc32 = function(dataView) {\n var crcTable = daikon.Utils.crcTable || (daikon.Utils.crcTable = daikon.Utils.makeCRCTable());\n var crc = 0 ^ (-1);\n\n for (var i = 0; i < dataView.byteLength; i++ ) {\n crc = (crc >>> 8) ^ crcTable[(crc ^ dataView.getUint8(i)) & 0xFF];\n }\n\n return (crc ^ (-1)) >>> 0;\n};\n\n\n\ndaikon.Utils.createBitMask = function (numBytes, bitsStored, unsigned) {\n var mask = 0xFFFFFFFF;\n mask >>>= (((4 - numBytes) * 8) + ((numBytes * 8) - bitsStored));\n\n if (unsigned) {\n if (numBytes == 1) {\n mask &= 0x000000FF;\n } else if (numBytes == 2) {\n mask &= 0x0000FFFF;\n } else if (numBytes == 4) {\n mask &= 0xFFFFFFFF;\n } else if (numBytes == 8) {\n mask = 0xFFFFFFFF;\n }\n } else {\n mask = 0xFFFFFFFF;\n }\n\n return mask;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Utils;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/utilities.js\n// module id = 10\n// module chunks = 0","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { DefaultDataType } = Constants;\nconst { vtkErrorMacro } = macro;\nconst TUPLE_HOLDER = [];\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction computeRange(values, component = 0, tuple = 1) {\n const range = { min: Number.MAX_VALUE, max: -Number.MAX_VALUE };\n\n if (component < 0) {\n // Compute magnitude\n vtkErrorMacro('vtkDataArray: Compute magnitude - NOT IMPLEMENTED');\n return range;\n }\n\n const size = values.length;\n for (let i = component; i < size; i += tuple) {\n const value = values[i];\n if (range.min > value) {\n range.min = value;\n }\n if (range.max < value) {\n range.max = value;\n }\n }\n\n return range;\n}\n\nfunction ensureRangeSize(rangeArray, size = 0) {\n const ranges = rangeArray || [];\n // Pad ranges with null value to get the\n while (ranges.length <= size) {\n ranges.push(null);\n }\n return ranges;\n}\n\nfunction getDataType(typedArray) {\n return Object.prototype.toString\n .call(typedArray)\n .split(' ')[1]\n .slice(0, -1);\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n computeRange,\n getDataType,\n};\n\n// ----------------------------------------------------------------------------\n// vtkDataArray methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataArray(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataArray');\n\n function dataChange() {\n model.ranges = null;\n publicAPI.modified();\n }\n\n publicAPI.getElementComponentSize = () => model.values.BYTES_PER_ELEMENT;\n\n // Description:\n // Return the data component at the location specified by tupleIdx and\n // compIdx.\n publicAPI.getComponent = (tupleIdx, compIdx = 0) =>\n model.values[tupleIdx * model.numberOfComponents + compIdx];\n\n // Description:\n // Set the data component at the location specified by tupleIdx and compIdx\n // to value.\n // Note that i is less than NumberOfTuples and j is less than\n // NumberOfComponents. Make sure enough memory has been allocated\n // (use SetNumberOfTuples() and SetNumberOfComponents()).\n publicAPI.setComponent = (tupleIdx, compIdx, value) => {\n if (value !== model.values[tupleIdx * model.numberOfComponents + compIdx]) {\n model.values[tupleIdx * model.numberOfComponents + compIdx] = value;\n dataChange();\n }\n };\n\n publicAPI.getData = () => model.values;\n\n publicAPI.getRange = (componentIndex = 0) => {\n const rangeIdx =\n componentIndex < 0 ? model.numberOfComponents : componentIndex;\n let range = null;\n\n if (!model.ranges) {\n model.ranges = ensureRangeSize(model.ranges, model.numberOfComponents);\n }\n range = model.ranges[rangeIdx];\n\n if (range) {\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n }\n\n // Need to compute ranges...\n range = computeRange(\n model.values,\n componentIndex,\n model.numberOfComponents\n );\n model.ranges[rangeIdx] = range;\n model.rangeTuple[0] = range.min;\n model.rangeTuple[1] = range.max;\n return model.rangeTuple;\n };\n\n publicAPI.setTuple = (idx, tuple) => {\n const offset = idx * model.numberOfComponents;\n for (let i = 0; i < model.numberOfComponents; i++) {\n model.values[offset + i] = tuple[i];\n }\n };\n\n publicAPI.getTuple = (idx, tupleToFill = TUPLE_HOLDER) => {\n const numberOfComponents = model.numberOfComponents || 1;\n if (tupleToFill.length) {\n tupleToFill.length = numberOfComponents;\n }\n const offset = idx * numberOfComponents;\n for (let i = 0; i < numberOfComponents; i++) {\n tupleToFill[i] = model.values[offset + i];\n }\n return tupleToFill;\n };\n\n publicAPI.getTupleLocation = (idx = 1) => idx * model.numberOfComponents;\n publicAPI.getNumberOfComponents = () => model.numberOfComponents;\n publicAPI.getNumberOfValues = () => model.values.length;\n publicAPI.getNumberOfTuples = () =>\n model.values.length / model.numberOfComponents;\n publicAPI.getDataType = () => model.dataType;\n /* eslint-disable no-use-before-define */\n publicAPI.newClone = () =>\n newInstance({\n empty: true,\n name: model.name,\n dataType: model.dataType,\n numberOfComponents: model.numberOfComponents,\n });\n /* eslint-enable no-use-before-define */\n\n publicAPI.getName = () => {\n if (!model.name) {\n publicAPI.modified();\n model.name = `vtkDataArray${publicAPI.getMTime()}`;\n }\n return model.name;\n };\n\n publicAPI.setData = (typedArray, numberOfComponents) => {\n model.values = typedArray;\n model.size = typedArray.length;\n model.dataType = getDataType(typedArray);\n if (numberOfComponents) {\n model.numberOfComponents = numberOfComponents;\n }\n if (model.size % model.numberOfComponents !== 0) {\n model.numberOfComponents = 1;\n }\n dataChange();\n };\n\n /* eslint-disable no-use-before-define */\n publicAPI.shallowCopy = () => newInstance(Object.assign({}, model));\n /* eslint-enable no-use-before-define */\n\n // Override serialization support\n publicAPI.getState = () => {\n const jsonArchive = Object.assign({}, model, {\n vtkClass: publicAPI.getClassName(),\n });\n\n // Convert typed array to regular array\n jsonArchive.values = Array.from(jsonArchive.values);\n delete jsonArchive.buffer;\n\n // Clean any empty data\n Object.keys(jsonArchive).forEach((keyName) => {\n if (!jsonArchive[keyName]) {\n delete jsonArchive[keyName];\n }\n });\n\n // Sort resulting object by key name\n const sortedObj = {};\n Object.keys(jsonArchive)\n .sort()\n .forEach((name) => {\n sortedObj[name] = jsonArchive[name];\n });\n\n // Remove mtime\n if (sortedObj.mtime) {\n delete sortedObj.mtime;\n }\n\n return sortedObj;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n name: '',\n numberOfComponents: 1,\n size: 0,\n dataType: DefaultDataType,\n rangeTuple: [0, 0],\n // values: null,\n // ranges: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n if (!model.empty && !model.values && !model.size) {\n throw new TypeError(\n 'Cannot create vtkDataArray object without: size > 0, values'\n );\n }\n\n if (!model.values) {\n model.values = new window[model.dataType](model.size);\n } else if (Array.isArray(model.values)) {\n model.values = window[model.dataType].from(model.values);\n }\n\n if (model.values) {\n model.size = model.values.length;\n model.dataType = getDataType(model.values);\n }\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.set(publicAPI, model, ['name', 'numberOfComponents']);\n\n // Object specific methods\n vtkDataArray(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataArray');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/DataArray/index.js","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.DataStream = jpeg.lossless.DataStream || function (data, offset, length) {\n if (offset === undefined && length === undefined) { // Old api\n this.buffer = new Uint8Array(data);\n } else {\n this.buffer = new Uint8Array(data, offset, length);\n }\n this.index = 0;\n};\n\n\n\njpeg.lossless.DataStream.prototype.get16 = function () {\n // var value = this.buffer.getUint16(this.index, false);\n var value = (this.buffer[this.index] << 8) + this.buffer[this.index + 1]; // DataView is big-endian by default\n this.index += 2;\n return value;\n};\n\n\n\njpeg.lossless.DataStream.prototype.get8 = function () {\n // var value = this.buffer.getUint8(this.index);\n var value = this.buffer[this.index];\n this.index += 1;\n return value;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.DataStream;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/data-stream.js\n// module id = 12\n// module chunks = 0","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 13\n// module chunks = 0","module.exports = (__webpack_require__(3))(230);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/webpack/buildin/module.js from dll-reference girder_lib\n// module id = 14\n// module chunks = 0","export const DataTypeByteSize = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8,\n};\n\nexport const VtkDataTypes = {\n VOID: '', // FIXME not sure to know what that shoud be\n CHAR: 'Int8Array',\n SIGNED_CHAR: 'Int8Array',\n UNSIGNED_CHAR: 'Uint8Array',\n SHORT: 'Int16Array',\n UNSIGNED_SHORT: 'Uint16Array',\n INT: 'Int32Array',\n UNSIGNED_INT: 'Uint32Array',\n FLOAT: 'Float32Array',\n DOUBLE: 'Float64Array',\n};\n\nexport const DefaultDataType = VtkDataTypes.FLOAT;\n\nexport default {\n DefaultDataType,\n DataTypeByteSize,\n VtkDataTypes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/DataArray/Constants.js","export const ObjectType = {\n ARRAY_BUFFER: 0,\n ELEMENT_ARRAY_BUFFER: 1,\n TEXTURE_BUFFER: 2,\n};\n\nexport default {\n ObjectType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants.js","import Constants from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport { vec3 } from 'gl-matrix';\n\nconst { Wrap, Filter } = Constants;\nconst { VtkDataTypes } = vtkDataArray;\nconst { vtkDebugMacro, vtkErrorMacro, vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLTexture methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLTexture(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLTexture');\n // Renders myself\n publicAPI.render = () => {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n // sync renderable properties\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n if (model.renderable.getInterpolate()) {\n if (model.generateMipmap) {\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.LINEAR);\n }\n publicAPI.setMagnificationFilter(Filter.LINEAR);\n } else {\n publicAPI.setMinificationFilter(Filter.NEAREST);\n publicAPI.setMagnificationFilter(Filter.NEAREST);\n }\n if (model.renderable.getRepeat()) {\n publicAPI.setWrapR(Wrap.REPEAT);\n publicAPI.setWrapS(Wrap.REPEAT);\n publicAPI.setWrapT(Wrap.REPEAT);\n }\n // clear image if input data is set\n if (model.renderable.getInputData()) {\n model.renderable.setImage(null);\n }\n // create the texture if it is not done already\n if (\n !model.handle ||\n model.renderable.getMTime() > model.textureBuildTime.getMTime()\n ) {\n // if we have an Image\n if (model.renderable.getImage() !== null) {\n if (model.renderable.getInterpolate()) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n // Have an Image which may not be complete\n if (model.renderable.getImage() && model.renderable.getImageLoaded()) {\n publicAPI.create2DFromImage(model.renderable.getImage());\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n }\n // if we have Inputdata\n const input = model.renderable.getInputData(0);\n if (input && input.getPointData().getScalars()) {\n const ext = input.getExtent();\n const inScalars = input.getPointData().getScalars();\n\n // do we have a cube map? Six inputs\n const data = [];\n for (let i = 0; i < 6; ++i) {\n const indata = model.renderable.getInputData(i);\n const scalars = indata\n ? indata\n .getPointData()\n .getScalars()\n .getData()\n : null;\n if (scalars) {\n data.push(scalars);\n }\n }\n if (data.length === 6) {\n publicAPI.createCubeFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n data\n );\n } else {\n if (\n model.renderable.getInterpolate() &&\n inScalars.getNumberOfComponents() === 4\n ) {\n model.generateMipmap = true;\n publicAPI.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n }\n publicAPI.create2DFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n inScalars.getData()\n );\n }\n publicAPI.activate();\n publicAPI.sendParameters();\n model.textureBuildTime.modified();\n }\n }\n if (model.handle) {\n publicAPI.activate();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.destroyTexture = () => {\n // deactivate it first\n publicAPI.deactivate();\n\n if (model.context && model.handle) {\n model.context.deleteTexture(model.handle);\n }\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n publicAPI.resetFormatAndType();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createTexture = () => {\n // reuse the existing handle if we have one\n if (!model.handle) {\n model.handle = model.context.createTexture();\n\n if (model.target) {\n model.context.bindTexture(model.target, model.handle);\n\n // See: http://www.openmodel.context..org/wiki/Common_Mistakes#Creating_a_complete_texture\n // turn off mip map filter or set the base and max level correctly. here\n // both are done.\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MIN_FILTER,\n publicAPI.getOpenGLFilterMode(model.minificationFilter)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MAG_FILTER,\n publicAPI.getOpenGLFilterMode(model.magnificationFilter)\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_S,\n publicAPI.getOpenGLWrapMode(model.wrapS)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_T,\n publicAPI.getOpenGLWrapMode(model.wrapT)\n );\n\n model.context.bindTexture(model.target, null);\n }\n }\n };\n\n //---------------------------------------------------------------------------\n publicAPI.getTextureUnit = () => {\n if (model.openGLRenderWindow) {\n return model.openGLRenderWindow.getTextureUnitForTexture(publicAPI);\n }\n return -1;\n };\n\n //---------------------------------------------------------------------------\n publicAPI.activate = () => {\n // activate a free texture unit for this texture\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.bind();\n };\n\n //---------------------------------------------------------------------------\n publicAPI.deactivate = () => {\n if (model.openGLRenderWindow) {\n model.openGLRenderWindow.deactivateTexture(publicAPI);\n }\n };\n\n //---------------------------------------------------------------------------\n publicAPI.releaseGraphicsResources = (rwin) => {\n if (rwin && model.handle) {\n rwin.makeCurrent();\n\n rwin.activateTexture(publicAPI);\n rwin.deactivateTexture(publicAPI);\n model.context.deleteTexture(model.handle);\n model.handle = 0;\n model.numberOfDimensions = 0;\n model.target = 0;\n model.internalFormat = 0;\n model.format = 0;\n model.openGLDataType = 0;\n model.components = 0;\n model.width = 0;\n model.height = 0;\n model.depth = 0;\n }\n if (model.shaderProgram) {\n model.shaderProgram.releaseGraphicsResources(rwin);\n model.shaderProgram = null;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.bind = () => {\n model.context.bindTexture(model.target, model.handle);\n if (\n model.autoParameters &&\n publicAPI.getMTime() > model.sendParametersTime.getMTime()\n ) {\n publicAPI.sendParameters();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.isBound = () => {\n let result = false;\n if (model.context && model.handle) {\n let target = 0;\n switch (model.target) {\n case model.context.TEXTURE_2D:\n target = model.context.TEXTURE_BINDING_2D;\n break;\n default:\n vtkWarningMacro('impossible case');\n break;\n }\n const oid = model.context.getIntegerv(target);\n result = oid === model.handle;\n }\n return result;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.sendParameters = () => {\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_S,\n publicAPI.getOpenGLWrapMode(model.wrapS)\n );\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_T,\n publicAPI.getOpenGLWrapMode(model.wrapT)\n );\n if (model.openGLRenderWindow.getWebgl2()) {\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_WRAP_R,\n publicAPI.getOpenGLWrapMode(model.wrapR)\n );\n }\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MIN_FILTER,\n publicAPI.getOpenGLFilterMode(model.minificationFilter)\n );\n\n model.context.texParameteri(\n model.target,\n model.context.TEXTURE_MAG_FILTER,\n publicAPI.getOpenGLFilterMode(model.magnificationFilter)\n );\n\n // model.context.texParameterf(model.target, model.context.TEXTURE_MIN_LOD, model.minLOD);\n // model.context.texParameterf(model.target, model.context.TEXTURE_MAX_LOD, model.maxLOD);\n // model.context.texParameteri(model.target, model.context.TEXTURE_BASE_LEVEL, model.baseLevel);\n // model.context.texParameteri(model.target, model.context.TEXTURE_MAX_LEVEL, model.maxLevel);\n\n model.sendParametersTime.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getInternalFormat = (vtktype, numComps) => {\n if (model.internalFormat) {\n return model.internalFormat;\n }\n\n model.internalFormat = publicAPI.getDefaultInternalFormat(\n vtktype,\n numComps\n );\n\n if (!model.internalFormat) {\n vtkDebugMacro(\n `Unable to find suitable internal format for T=${vtktype} NC= ${numComps}`\n );\n }\n\n return model.internalFormat;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultInternalFormat = (vtktype, numComps) => {\n let result = 0;\n\n // try default next\n result = model.openGLRenderWindow.getDefaultTextureInternalFormat(\n vtktype,\n numComps,\n false\n );\n if (result) {\n return result;\n }\n\n // try floating point\n result = this.openGLRenderWindow.getDefaultTextureInternalFormat(\n vtktype,\n numComps,\n true\n );\n\n if (!result) {\n vtkDebugMacro('Unsupported internal texture type!');\n vtkDebugMacro(\n `Unable to find suitable internal format for T=${vtktype} NC= ${numComps}`\n );\n }\n\n return result;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.setInternalFormat = (iFormat) => {\n if (iFormat !== model.context.InternalFormat) {\n model.internalFormat = iFormat;\n publicAPI.modified();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getFormat = (vtktype, numComps) => {\n if (!model.format) {\n model.format = publicAPI.getDefaultFormat(vtktype, numComps);\n }\n return model.format;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultFormat = (vtktype, numComps) => {\n if (model.openGLRenderWindow.getWebgl2()) {\n switch (numComps) {\n case 1:\n return model.context.RED;\n case 2:\n return model.context.RG;\n case 3:\n return model.context.RGB;\n case 4:\n return model.context.RGBA;\n default:\n return model.context.RGB;\n }\n } else {\n switch (numComps) {\n case 1:\n return model.context.LUMINANCE;\n case 2:\n return model.context.LUMINANCE_ALPHA;\n case 3:\n return model.context.RGB;\n case 4:\n return model.context.RGBA;\n default:\n return model.context.RGB;\n }\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.resetFormatAndType = () => {\n model.format = 0;\n model.internalFormat = 0;\n model.openGLDataType = 0;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getDefaultDataType = (vtkScalarType) => {\n // DON'T DEAL with VTK_CHAR as this is platform dependent.\n if (model.openGLRenderWindow.getWebgl2()) {\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // case VtkDataTypes.SHORT:\n // return model.context.SHORT;\n // case VtkDataTypes.UNSIGNED_SHORT:\n // return model.context.UNSIGNED_SHORT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n default:\n return model.context.FLOAT;\n }\n }\n\n switch (vtkScalarType) {\n // case VtkDataTypes.SIGNED_CHAR:\n // return model.context.BYTE;\n case VtkDataTypes.UNSIGNED_CHAR:\n return model.context.UNSIGNED_BYTE;\n // case VtkDataTypes.SHORT:\n // return model.context.SHORT;\n // case VtkDataTypes.UNSIGNED_SHORT:\n // return model.context.UNSIGNED_SHORT;\n // case VtkDataTypes.INT:\n // return model.context.INT;\n // case VtkDataTypes.UNSIGNED_INT:\n // return model.context.UNSIGNED_INT;\n case VtkDataTypes.FLOAT:\n case VtkDataTypes.VOID: // used for depth component textures.\n default:\n if (\n model.context.getExtension('OES_texture_float') &&\n model.context.getExtension('OES_texture_float_linear')\n ) {\n return model.context.FLOAT;\n }\n return model.context.UNSIGNED_BYTE;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLDataType = (vtkScalarType) => {\n if (!model.openGLDataType) {\n model.openGLDataType = publicAPI.getDefaultDataType(vtkScalarType);\n }\n\n return model.openGLDataType;\n };\n\n publicAPI.getShiftAndScale = () => {\n let shift = 0.0;\n let scale = 1.0;\n\n // for all float type internal formats\n switch (model.openGLDataType) {\n case model.context.BYTE:\n scale = 127.5;\n shift = scale - 128.0;\n break;\n case model.context.UNSIGNED_BYTE:\n scale = 255.0;\n shift = 0.0;\n break;\n case model.context.SHORT:\n scale = 32767.5;\n shift = scale - 32768.0;\n break;\n case model.context.UNSIGNED_SHORT:\n scale = 65536.0;\n shift = 0.0;\n break;\n case model.context.INT:\n scale = 2147483647.5;\n shift = scale - 2147483648.0;\n break;\n case model.context.UNSIGNED_INT:\n scale = 4294967295.0;\n shift = 0.0;\n break;\n case model.context.FLOAT:\n default:\n break;\n }\n return { shift, scale };\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLFilterMode = (emode) => {\n switch (emode) {\n case Filter.NEAREST:\n return model.context.NEAREST;\n case Filter.LINEAR:\n return model.context.LINEAR;\n case Filter.NEAREST_MIPMAP_NEAREST:\n return model.context.NEAREST_MIPMAP_NEAREST;\n case Filter.NEAREST_MIPMAP_LINEAR:\n return model.context.NEAREST_MIPMAP_LINEAR;\n case Filter.LINEAR_MIPMAP_NEAREST:\n return model.context.LINEAR_MIPMAP_NEAREST;\n case Filter.LINEAR_MIPMAP_LINEAR:\n return model.context.LINEAR_MIPMAP_LINEAR;\n default:\n return model.context.NEAREST;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getOpenGLWrapMode = (vtktype) => {\n switch (vtktype) {\n case Wrap.CLAMP_TO_EDGE:\n return model.context.CLAMP_TO_EDGE;\n case Wrap.REPEAT:\n return model.context.REPEAT;\n case Wrap.MIRRORED_REPEAT:\n return model.context.MIRRORED_REPEAT;\n default:\n return model.context.CLAMP_TO_EDGE;\n }\n };\n\n //----------------------------------------------------------------------------\n function updateArrayDataType(dataType, data) {\n const pixData = [];\n // if the opengl data type is float\n // then the data array must be float\n if (\n dataType !== VtkDataTypes.FLOAT &&\n model.openGLDataType === model.context.FLOAT\n ) {\n const pixCount = model.width * model.height * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n const newArray = new Float32Array(pixCount);\n for (let i = 0; i < pixCount; i++) {\n newArray[i] = data[idx][i];\n }\n pixData.push(newArray);\n }\n }\n\n // if the opengl data type is ubyte\n // then the data array must be u8, we currently simply truncate the data\n if (\n dataType !== VtkDataTypes.UNSIGNED_CHAR &&\n model.openGLDataType === model.context.UNSIGNED_BYTE\n ) {\n const pixCount = model.width * model.height * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n const newArray = new Uint8Array(pixCount);\n for (let i = 0; i < pixCount; i++) {\n newArray[i] = data[idx][i];\n }\n pixData.push(newArray);\n }\n }\n\n // The output has to be filled\n if (pixData.length === 0) {\n for (let i = 0; i < data.length; i++) {\n pixData.push(data[i]);\n }\n }\n\n return pixData;\n }\n\n //----------------------------------------------------------------------------\n function scaleTextureToHighestPowerOfTwo(data) {\n const pixData = [];\n const width = model.width;\n const height = model.height;\n const numComps = model.components;\n if (\n data &&\n (!vtkMath.isPowerOfTwo(width) || !vtkMath.isPowerOfTwo(height))\n ) {\n // Scale up the texture to the next highest power of two dimensions.\n const newWidth = vtkMath.nearestPowerOfTwo(width);\n const newHeight = vtkMath.nearestPowerOfTwo(height);\n const pixCount = newWidth * newHeight * model.components;\n for (let idx = 0; idx < data.length; idx++) {\n if (data[idx] !== null) {\n let newArray = null;\n switch (model.openGLDataType) {\n case model.context.FLOAT:\n newArray = new Float32Array(pixCount);\n break;\n default:\n case model.context.UNSIGNED_BYTE:\n newArray = new Uint8Array(pixCount);\n break;\n }\n const jFactor = height / newHeight;\n const iFactor = width / newWidth;\n for (let j = 0; j < newHeight; j++) {\n const joff = j * newWidth * numComps;\n const jidx = j * jFactor;\n let jlow = Math.floor(jidx);\n let jhi = Math.ceil(jidx);\n if (jhi >= height) {\n jhi = height - 1;\n }\n const jmix = jidx - jlow;\n const jmix1 = 1.0 - jmix;\n jlow = jlow * width * numComps;\n jhi = jhi * width * numComps;\n for (let i = 0; i < newWidth; i++) {\n const ioff = i * numComps;\n const iidx = i * iFactor;\n let ilow = Math.floor(iidx);\n let ihi = Math.ceil(iidx);\n if (ihi >= width) {\n ihi = width - 1;\n }\n const imix = iidx - ilow;\n ilow *= numComps;\n ihi *= numComps;\n for (let c = 0; c < numComps; c++) {\n newArray[joff + ioff + c] =\n data[idx][jlow + ilow + c] * jmix1 * (1.0 - imix) +\n data[idx][jlow + ihi + c] * jmix1 * imix +\n data[idx][jhi + ilow + c] * jmix * (1.0 - imix) +\n data[idx][jhi + ihi + c] * jmix * imix;\n }\n }\n }\n pixData.push(newArray);\n model.width = newWidth;\n model.height = newHeight;\n } else {\n pixData.push(null);\n }\n }\n }\n\n // The output has to be filled\n if (pixData.length === 0) {\n for (let i = 0; i < data.length; i++) {\n pixData.push(data[i]);\n }\n }\n\n return pixData;\n }\n\n //----------------------------------------------------------------------------\n publicAPI.create2DFromRaw = (width, height, numComps, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Create an array of texture with one texture\n const dataArray = [data];\n const pixData = updateArrayDataType(dataType, dataArray);\n const scaledData = scaleTextureToHighestPowerOfTwo(pixData);\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n scaledData[0]\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createCubeFromRaw = (width, height, numComps, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_CUBE_MAP;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n const pixData = updateArrayDataType(dataType, data);\n const scaledData = scaleTextureToHighestPowerOfTwo(pixData);\n\n // Source texture data from the PBO.\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n for (let i = 0; i < 6; i++) {\n if (scaledData[i]) {\n model.context.texImage2D(\n model.context.TEXTURE_CUBE_MAP_POSITIVE_X + i,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n scaledData[i]\n );\n }\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.createDepthFromRaw = (width, height, dataType, data) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n model.format = model.context.DEPTH_COMPONENT;\n model.internalFormat = model.context.DEPTH_COMPONENT;\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 1;\n model.width = width;\n model.height = height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n data\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.create2DFromImage = (image) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(VtkDataTypes.UNSIGNED_CHAR);\n publicAPI.getInternalFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n publicAPI.getFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 4;\n model.width = image.width;\n model.height = image.height;\n model.depth = 1;\n model.numberOfDimensions = 2;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n // Scale up the texture to the next highest power of two dimensions (if needed) and flip y.\n const needNearestPowerOfTwo =\n !vtkMath.isPowerOfTwo(image.width) || !vtkMath.isPowerOfTwo(image.height);\n const canvas = document.createElement('canvas');\n canvas.width = needNearestPowerOfTwo\n ? vtkMath.nearestPowerOfTwo(image.width)\n : image.width;\n canvas.height = needNearestPowerOfTwo\n ? vtkMath.nearestPowerOfTwo(image.height)\n : image.height;\n const ctx = canvas.getContext('2d');\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n ctx.drawImage(\n image,\n 0,\n 0,\n image.width,\n image.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n const safeImage = canvas;\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.format,\n model.openGLDataType,\n safeImage\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.create3DFromRaw = (\n width,\n height,\n depth,\n numComps,\n dataType,\n data\n ) => {\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataType);\n publicAPI.getInternalFormat(dataType, numComps);\n publicAPI.getFormat(dataType, numComps);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_3D;\n model.components = numComps;\n model.width = width;\n model.height = height;\n model.depth = depth;\n model.numberOfDimensions = 3;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n // model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage3D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n model.depth,\n 0,\n model.format,\n model.openGLDataType,\n data\n );\n\n if (model.generateMipmap) {\n model.context.generateMipmap(model.target);\n }\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n // This method simulates a 3D texture using 2D\n publicAPI.create3DOneComponentFromRaw = (\n width,\n height,\n depth,\n dataType,\n data\n ) => {\n const numPixelsIn = width * height * depth;\n\n // compute min and max values\n let min = data[0];\n let max = data[0];\n for (let i = 0; i < numPixelsIn; ++i) {\n min = Math.min(min, data[i]);\n max = Math.max(max, data[i]);\n }\n if (min === max) {\n max = min + 1.0;\n }\n\n // store the information, we will need it later\n model.volumeInfo = { min, max, width, height, depth };\n\n let volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n outArray[outIdx] = inValue;\n };\n let dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR;\n let numCompsToUse = 1;\n let encodedScalars = false;\n if (dataType === VtkDataTypes.UNSIGNED_CHAR) {\n model.volumeInfo.min = 0.0;\n model.volumeInfo.max = 255.0;\n } else if (\n model.openGLRenderWindow.getWebgl2() ||\n (model.context.getExtension('OES_texture_float') &&\n model.context.getExtension('OES_texture_float_linear'))\n ) {\n dataTypeToUse = VtkDataTypes.FLOAT;\n volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n outArray[outIdx] = (inValue - smin) / (smax - smin);\n };\n } else {\n encodedScalars = true;\n dataTypeToUse = VtkDataTypes.UNSIGNED_CHAR;\n numCompsToUse = 4;\n volCopyData = (outArray, outIdx, inValue, smin, smax) => {\n let fval = (inValue - smin) / (smax - smin);\n const r = Math.floor(fval * 255.0);\n fval = fval * 255.0 - r;\n outArray[outIdx] = r;\n const g = Math.floor(fval * 255.0);\n fval = fval * 255.0 - g;\n outArray[outIdx + 1] = g;\n const b = Math.floor(fval * 255.0);\n outArray[outIdx + 2] = b;\n };\n }\n\n if (model.openGLRenderWindow.getWebgl2()) {\n if (dataType !== VtkDataTypes.UNSIGNED_CHAR) {\n const newArray = new Float32Array(numPixelsIn);\n for (let i = 0; i < numPixelsIn; ++i) {\n newArray[i] = (data[i] - min) / (max - min);\n }\n return publicAPI.create3DFromRaw(\n width,\n height,\n depth,\n 1,\n VtkDataTypes.FLOAT,\n newArray\n );\n }\n return publicAPI.create3DFromRaw(width, height, depth, 1, dataType, data);\n }\n\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(dataTypeToUse);\n publicAPI.getInternalFormat(dataTypeToUse, numCompsToUse);\n publicAPI.getFormat(dataTypeToUse, numCompsToUse);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = numCompsToUse;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n // have to pack this 3D texture into pot 2D texture\n const maxTexDim = model.context.getParameter(\n model.context.MAX_TEXTURE_SIZE\n );\n\n // compute estimate for XY subsample\n let xstride = 1;\n let ystride = 1;\n if (numPixelsIn > maxTexDim * maxTexDim) {\n xstride = Math.ceil(Math.sqrt(numPixelsIn / (maxTexDim * maxTexDim)));\n ystride = xstride;\n }\n let targetWidth = Math.sqrt(numPixelsIn) / xstride;\n targetWidth = vtkMath.nearestPowerOfTwo(targetWidth);\n // determine X reps\n const xreps = Math.floor(targetWidth * xstride / width);\n const yreps = Math.ceil(depth / xreps);\n const targetHeight = vtkMath.nearestPowerOfTwo(height * yreps / ystride);\n\n model.width = targetWidth;\n model.height = targetHeight;\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // store the information, we will need it later\n model.volumeInfo = {\n encodedScalars,\n min,\n max,\n width,\n height,\n depth,\n xreps,\n yreps,\n xstride,\n ystride,\n };\n\n // OK stuff the data into the 2d TEXTURE\n\n // first allocate the new texture\n let newArray;\n const pixCount = targetWidth * targetHeight * numCompsToUse;\n if (dataTypeToUse === VtkDataTypes.FLOAT) {\n newArray = new Float32Array(pixCount);\n } else {\n newArray = new Uint8Array(pixCount);\n }\n\n // then stuff the data into it, nothing fancy right now\n // for stride\n let outIdx = 0;\n\n for (let yRep = 0; yRep < yreps; yRep++) {\n const xrepsThisRow = Math.min(xreps, depth - yRep * xreps);\n const outXContIncr =\n model.width - xrepsThisRow * Math.floor(width / xstride);\n for (let inY = 0; inY < height; inY += ystride) {\n for (let xRep = 0; xRep < xrepsThisRow; xRep++) {\n const inOffset = (yRep * xreps + xRep) * width * height + inY * width;\n for (let inX = 0; inX < width; inX += xstride) {\n // copy value\n volCopyData(newArray, outIdx, data[inOffset + inX], min, max);\n outIdx += numCompsToUse;\n }\n }\n outIdx += outXContIncr * numCompsToUse;\n }\n }\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n newArray\n );\n\n publicAPI.deactivate();\n return true;\n };\n\n //----------------------------------------------------------------------------\n // This method creates a normal/gradient texture for 3D volume\n // rendering\n publicAPI.create3DLighting = (scalarTexture, data, spacing) => {\n const vinfo = scalarTexture.getVolumeInfo();\n\n const width = vinfo.width;\n const height = vinfo.height;\n const depth = vinfo.depth;\n\n // have to compute the gradient to get the normal\n // and magnitude\n const tmpArray = new Float32Array(width * height * depth * 4);\n\n let inPtr = 0;\n let outPtr = 0;\n const sliceSize = width * height;\n const grad = vec3.create();\n vec3.set(\n grad,\n (data[inPtr + 1] - data[inPtr]) / spacing[0],\n (data[inPtr + width] - data[inPtr]) / spacing[1],\n (data[inPtr + sliceSize] - data[inPtr]) / spacing[2]\n );\n let minMag = vec3.length(grad);\n let maxMag = -1.0;\n for (let z = 0; z < depth; ++z) {\n let zedge = 0;\n if (z === depth - 1) {\n zedge = -sliceSize;\n }\n for (let y = 0; y < height; ++y) {\n let yedge = 0;\n if (y === height - 1) {\n yedge = -width;\n }\n for (let x = 0; x < width; ++x) {\n let edge = inPtr + zedge + yedge;\n if (x === width - 1) {\n edge--;\n }\n vec3.set(\n grad,\n (data[edge + 1] - data[edge]) / spacing[0],\n (data[edge + width] - data[edge]) / spacing[1],\n (data[edge + sliceSize] - data[edge]) / spacing[2]\n );\n\n const mag = vec3.length(grad);\n minMag = Math.min(mag, minMag);\n maxMag = Math.max(mag, maxMag);\n\n vec3.normalize(grad, grad);\n tmpArray[outPtr++] = grad[0];\n tmpArray[outPtr++] = grad[1];\n tmpArray[outPtr++] = grad[2];\n tmpArray[outPtr++] = mag;\n inPtr++;\n }\n }\n }\n\n // store the information, we will need it later\n model.volumeInfo = { min: minMag, max: maxMag };\n let outIdx = 0;\n\n if (model.openGLRenderWindow.getWebgl2()) {\n const numPixelsIn = width * height * depth;\n const newArray = new Uint8Array(numPixelsIn * 4);\n for (let p = 0; p < numPixelsIn; ++p) {\n const pp = p * 4;\n newArray[outIdx++] = 127.5 + 127.5 * tmpArray[pp];\n newArray[outIdx++] = 127.5 + 127.5 * tmpArray[pp + 1];\n newArray[outIdx++] = 127.5 + 127.5 * tmpArray[pp + 2];\n // we encode gradient magnitude using sqrt so that\n // we have nonlinear resolution\n newArray[outIdx++] = 255.0 * Math.sqrt(tmpArray[pp + 3] / maxMag);\n }\n return publicAPI.create3DFromRaw(\n width,\n height,\n depth,\n 4,\n VtkDataTypes.UNSIGNED_CHAR,\n newArray\n );\n }\n\n // Now determine the texture parameters using the arguments.\n publicAPI.getOpenGLDataType(VtkDataTypes.UNSIGNED_CHAR);\n publicAPI.getInternalFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n publicAPI.getFormat(VtkDataTypes.UNSIGNED_CHAR, 4);\n\n if (!model.internalFormat || !model.format || !model.openGLDataType) {\n vtkErrorMacro('Failed to determine texture parameters.');\n return false;\n }\n\n model.target = model.context.TEXTURE_2D;\n model.components = 4;\n model.depth = 1;\n model.numberOfDimensions = 2;\n\n // now store the computed values into the packed 2D\n // texture using the same packing as volumeInfo\n model.width = scalarTexture.getWidth();\n model.height = scalarTexture.getHeight();\n const newArray = new Uint8Array(model.width * model.height * 4);\n\n for (let yRep = 0; yRep < vinfo.yreps; yRep++) {\n const xrepsThisRow = Math.min(vinfo.xreps, depth - yRep * vinfo.xreps);\n const outXContIncr =\n model.width - xrepsThisRow * Math.floor(width / vinfo.xstride);\n for (let inY = 0; inY < height; inY += vinfo.ystride) {\n for (let xRep = 0; xRep < xrepsThisRow; xRep++) {\n const inOffset =\n 4 * ((yRep * vinfo.xreps + xRep) * width * height + inY * width);\n for (let inX = 0; inX < width; inX += vinfo.xstride) {\n // copy value\n newArray[outIdx++] = 127.5 + 127.5 * tmpArray[inOffset + inX * 4];\n newArray[outIdx++] =\n 127.5 + 127.5 * tmpArray[inOffset + inX * 4 + 1];\n newArray[outIdx++] =\n 127.5 + 127.5 * tmpArray[inOffset + inX * 4 + 2];\n // we encode gradient magnitude using sqrt so that\n // we have nonlinear resolution\n newArray[outIdx++] =\n 255.0 * Math.sqrt(tmpArray[inOffset + inX * 4 + 3] / maxMag);\n }\n }\n outIdx += outXContIncr * 4;\n }\n }\n\n model.openGLRenderWindow.activateTexture(publicAPI);\n publicAPI.createTexture();\n publicAPI.bind();\n\n // Source texture data from the PBO.\n // model.context.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);\n model.context.pixelStorei(model.context.UNPACK_ALIGNMENT, 1);\n\n model.context.texImage2D(\n model.target,\n 0,\n model.internalFormat,\n model.width,\n model.height,\n 0,\n model.format,\n model.openGLDataType,\n newArray\n );\n\n publicAPI.deactivate();\n return true;\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getMaximumTextureSize = (ctx) => {\n if (ctx && ctx.isCurrent()) {\n return ctx.getIntegerv(ctx.MAX_TEXTURE_SIZE);\n }\n\n return -1;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n openGLRenderWindow: null,\n context: null,\n handle: 0,\n sendParametersTime: null,\n textureBuildTime: null,\n numberOfDimensions: 0,\n target: 0,\n format: 0,\n openGLDataType: 0,\n components: 0,\n width: 0,\n height: 0,\n depth: 0,\n autoParameters: true,\n wrapS: Wrap.CLAMP_TO_EDGE,\n wrapT: Wrap.CLAMP_TO_EDGE,\n wrapR: Wrap.CLAMP_TO_EDGE,\n minificationFilter: Filter.NEAREST,\n magnificationFilter: Filter.NEAREST,\n minLOD: -1000.0,\n maxLOD: 1000.0,\n baseLevel: 0,\n maxLevel: 0,\n generateMipmap: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.sendParametersTime = {};\n macro.obj(model.sendParametersTime, { mtime: 0 });\n\n model.textureBuildTime = {};\n macro.obj(model.textureBuildTime, { mtime: 0 });\n\n // Build VTK API\n macro.set(publicAPI, model, ['format', 'openGLDataType']);\n\n macro.setGet(publicAPI, model, [\n 'keyMatrixTime',\n 'minificationFilter',\n 'magnificationFilter',\n 'wrapS',\n 'wrapT',\n 'wrapR',\n 'generateMipmap',\n ]);\n\n macro.get(publicAPI, model, [\n 'width',\n 'height',\n 'volumeInfo',\n 'components',\n 'handle',\n 'target',\n ]);\n\n // Object methods\n vtkOpenGLTexture(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLTexture');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Texture/index.js","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.Utils = jpeg.lossless.Utils || {};\n\n\n/*** Static methods ***/\n\n// http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript\njpeg.lossless.Utils.createArray = function (length) {\n var arr = new Array(length || 0),\n i = length;\n\n if (arguments.length > 1) {\n var args = Array.prototype.slice.call(arguments, 1);\n while(i--) arr[length-1 - i] = jpeg.lossless.Utils.createArray.apply(this, args);\n }\n\n return arr;\n};\n\n\n// http://stackoverflow.com/questions/18638900/javascript-crc32\njpeg.lossless.Utils.makeCRCTable = function(){\n var c;\n var crcTable = [];\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n crcTable[n] = c;\n }\n return crcTable;\n};\n\njpeg.lossless.Utils.crc32 = function(dataView) {\n var uint8view = new Uint8Array(dataView.buffer);\n var crcTable = jpeg.lossless.Utils.crcTable || (jpeg.lossless.Utils.crcTable = jpeg.lossless.Utils.makeCRCTable());\n var crc = 0 ^ (-1);\n\n for (var i = 0; i < uint8view.length; i++ ) {\n crc = (crc >>> 8) ^ crcTable[(crc ^ uint8view[i]) & 0xFF];\n }\n\n return (crc ^ (-1)) >>> 0;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.Utils;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/utils.js\n// module id = 18\n// module chunks = 0","export const Shading = {\n FLAT: 0,\n GOURAUD: 1,\n PHONG: 2,\n};\n\nexport const Representation = {\n POINTS: 0,\n WIREFRAME: 1,\n SURFACE: 2,\n};\n\nexport const Interpolation = Shading;\n\nexport default {\n Shading,\n Representation,\n Interpolation,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Property/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nconst { ObjectType } = Constants;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {};\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLBufferObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLBufferObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLBufferObject');\n\n // Class-specific private functions\n function convertType(type) {\n switch (type) {\n case ObjectType.ELEMENT_ARRAY_BUFFER:\n return model.context.ELEMENT_ARRAY_BUFFER;\n case ObjectType.TEXTURE_BUFFER:\n if ('TEXTURE_BUFFER' in model.context) {\n return model.context.TEXTURE_BUFFER;\n }\n /* eslint-disable no-fallthrough */\n // Intentional fallthrough in case there is no TEXTURE_BUFFER in WebGL\n default:\n /* eslint-enable no-fallthrough */\n case ObjectType.ARRAY_BUFFER:\n return model.context.ARRAY_BUFFER;\n }\n }\n\n let internalType = null;\n let internalHandle = null;\n let dirty = true;\n let error = '';\n\n // Public API methods\n publicAPI.getType = () => internalType;\n\n publicAPI.setType = (value) => {\n internalType = value;\n };\n\n publicAPI.getHandle = () => internalHandle;\n publicAPI.isReady = () => dirty === false;\n\n publicAPI.generateBuffer = (type) => {\n const objectTypeGL = convertType(type);\n if (internalHandle === null) {\n internalHandle = model.context.createBuffer();\n internalType = type;\n }\n return convertType(internalType) === objectTypeGL;\n };\n\n publicAPI.upload = (data, type) => {\n // buffer, size, type\n const alreadyGenerated = publicAPI.generateBuffer(type);\n if (!alreadyGenerated) {\n error = 'Trying to upload array buffer to incompatible buffer.';\n return false;\n }\n model.context.bindBuffer(convertType(internalType), internalHandle);\n model.context.bufferData(\n convertType(internalType),\n data,\n model.context.STATIC_DRAW\n );\n dirty = false;\n return true;\n };\n\n publicAPI.bind = () => {\n if (!internalHandle) {\n return false;\n }\n model.context.bindBuffer(convertType(internalType), internalHandle);\n return true;\n };\n\n publicAPI.release = () => {\n if (!internalHandle) {\n return false;\n }\n model.context.bindBuffer(convertType(internalType), null);\n return true;\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (internalHandle !== null) {\n model.context.bindBuffer(convertType(internalType), null);\n model.context.deleteBuffer(internalHandle);\n internalHandle = null;\n }\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n publicAPI.getError = () => error;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n objectType: ObjectType.ARRAY_BUFFER,\n openGLRenderWindow: null,\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.get(publicAPI, model, ['openGLRenderWindow']);\n\n vtkOpenGLBufferObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/BufferObject/index.js","import { mat3, mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkHardwareSelector from 'vtk.js/Sources/Rendering/OpenGL/HardwareSelector';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkProperty from 'vtk.js/Sources/Rendering/Core/Property';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\nimport vtkPolyDataVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\n/* eslint-disable no-lonely-if */\n\nconst primTypes = {\n Start: 0,\n Points: 0,\n Lines: 1,\n Tris: 2,\n TriStrips: 3,\n TrisEdges: 4,\n TriStripsEdges: 5,\n End: 6,\n};\n\nconst { Representation, Shading } = vtkProperty;\nconst { ScalarMode } = vtkMapper;\nconst { Filter, Wrap } = vtkOpenGLTexture;\nconst { PassTypes } = vtkHardwareSelector;\nconst { vtkErrorMacro } = macro;\n\nconst StartEvent = { type: 'StartEvent' };\nconst EndEvent = { type: 'EndEvent' };\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLPolyDataMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLPolyDataMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLPolyDataMapper');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLActor = publicAPI.getFirstAncestorOfType('vtkOpenGLActor');\n model.openGLRenderer = model.openGLActor.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n model.openGLRenderer.getRenderable().getActiveCamera()\n );\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass) => {\n if (prepass) {\n model.renderDepth = true;\n publicAPI.render();\n model.renderDepth = false;\n }\n };\n\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.render = () => {\n const ctx = model.openGLRenderWindow.getContext();\n if (model.context !== ctx) {\n model.context = ctx;\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n model.primitives[i].setOpenGLRenderWindow(model.openGLRenderWindow);\n }\n }\n const actor = model.openGLActor.getRenderable();\n const ren = model.openGLRenderer.getRenderable();\n publicAPI.renderPiece(ren, actor);\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n\n // user specified pre replacements\n const openGLSpec = model.renderable.getViewSpecificProperties().OpenGL;\n let shaderReplacements = null;\n if (openGLSpec) {\n shaderReplacements = openGLSpec.ShaderReplacements;\n }\n\n if (shaderReplacements) {\n for (let i = 0; i < shaderReplacements.length; i++) {\n const currReplacement = shaderReplacements[i];\n if (currReplacement.replaceFirst) {\n const shaderType = currReplacement.shaderType;\n const ssrc = shaders[shaderType];\n const substituteRes = vtkShaderProgram.substitute(\n ssrc,\n currReplacement.originalValue,\n currReplacement.replacementValue,\n currReplacement.replaceAll\n );\n shaders[shaderType] = substituteRes.result;\n }\n }\n }\n\n publicAPI.replaceShaderValues(shaders, ren, actor);\n\n // user specified post replacements\n if (shaderReplacements) {\n for (let i = 0; i < shaderReplacements.length; i++) {\n const currReplacement = shaderReplacements[i];\n if (!currReplacement.replaceFirst) {\n const shaderType = currReplacement.shaderType;\n const ssrc = shaders[shaderType];\n const substituteRes = vtkShaderProgram.substitute(\n ssrc,\n currReplacement.originalValue,\n currReplacement.replacementValue,\n currReplacement.replaceAll\n );\n shaders[shaderType] = substituteRes.result;\n }\n }\n }\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n const openGLSpecProp = model.renderable.getViewSpecificProperties().OpenGL;\n\n let vertexShaderCode = vtkPolyDataVS;\n if (openGLSpecProp) {\n const vertexSpecProp = openGLSpecProp.VertexShaderCode;\n if (vertexSpecProp !== undefined && vertexSpecProp !== '') {\n vertexShaderCode = vertexSpecProp;\n }\n }\n shaders.Vertex = vertexShaderCode;\n\n let fragmentShaderCode = vtkPolyDataFS;\n if (openGLSpecProp) {\n const fragmentSpecProp = openGLSpecProp.FragmentShaderCode;\n if (fragmentSpecProp !== undefined && fragmentSpecProp !== '') {\n fragmentShaderCode = fragmentSpecProp;\n }\n }\n shaders.Fragment = fragmentShaderCode;\n\n let geometryShaderCode = '';\n if (openGLSpecProp) {\n const geometrySpecProp = openGLSpecProp.GeometryShaderCode;\n if (geometrySpecProp !== undefined) {\n geometryShaderCode = geometrySpecProp;\n }\n }\n shaders.Geometry = geometryShaderCode;\n };\n\n publicAPI.replaceShaderColor = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n // create the material/color property declarations, and VS implementation\n // these are always defined\n let colorDec = [\n 'uniform float ambient;',\n 'uniform float diffuse;',\n 'uniform float specular;',\n 'uniform float opacityUniform; // the fragment opacity',\n 'uniform vec3 ambientColorUniform;',\n 'uniform vec3 diffuseColorUniform;',\n ];\n // add more for specular\n if (lastLightComplexity) {\n colorDec = colorDec.concat([\n 'uniform vec3 specularColorUniform;',\n 'uniform float specularPowerUniform;',\n ]);\n }\n\n // now handle the more complex fragment shader implementation\n // the following are always defined variables. We start\n // by assiging a default value from the uniform\n let colorImpl = [\n 'vec3 ambientColor;',\n ' vec3 diffuseColor;',\n ' float opacity;',\n ];\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' vec3 specularColor;',\n ' float specularPower;',\n ]);\n }\n colorImpl = colorImpl.concat([\n ' ambientColor = ambientColorUniform;',\n ' diffuseColor = diffuseColorUniform;',\n ' opacity = opacityUniform;',\n ]);\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' specularColor = specularColorUniform;',\n ' specularPower = specularPowerUniform;',\n ]);\n }\n\n // add scalar vertex coloring\n if (\n model.lastBoundBO.getCABO().getColorComponents() !== 0 &&\n !model.drawingEdges\n ) {\n colorDec = colorDec.concat(['varying vec4 vertexColorVSOutput;']);\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Dec', [\n 'attribute vec4 scalarColor;',\n 'varying vec4 vertexColorVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Impl', [\n 'vertexColorVSOutput = scalarColor;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Dec', [\n 'in vec4 vertexColorVSOutput[];',\n 'out vec4 vertexColorGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Impl', [\n 'vertexColorGSOutput = vertexColorVSOutput[i];',\n ]).result;\n }\n\n if (\n model.lastBoundBO.getCABO().getColorComponents() !== 0 &&\n !model.drawingEdges\n ) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl.concat([\n ' diffuseColor = vertexColorVSOutput.rgb;',\n ' ambientColor = vertexColorVSOutput.rgb;',\n ' opacity = opacity*vertexColorVSOutput.a;',\n ])\n ).result;\n } else {\n if (\n model.renderable.getInterpolateScalarsBeforeMapping() &&\n model.renderable.getColorCoordinates() &&\n !model.drawingEdges\n ) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl.concat([\n ' vec4 texColor = texture2D(texture1, tcoordVCVSOutput.st);',\n ' diffuseColor = texColor.rgb;',\n ' ambientColor = texColor.rgb;',\n ' opacity = opacity*texColor.a;',\n ])\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl\n ).result;\n }\n }\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Dec',\n colorDec\n ).result;\n\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderLight = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n // check for shadow maps\n const shadowFactor = '';\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n const lastLightCount = model.lastBoundBO.getReferenceByName(\n 'lastLightCount'\n );\n\n let sstring = [];\n\n switch (lastLightComplexity) {\n case 0: // no lighting or RENDER_VALUES\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n break;\n\n case 1: // headlight\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' float df = max(0.0, normalVCVSOutput.z);',\n ' float sf = pow(df, specularPower);',\n ' vec3 diffuseL = df * diffuseColor;',\n ' vec3 specularL = sf * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n break;\n\n case 2: // light kit\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n `uniform vec3 lightColor${lc};`,\n `uniform vec3 lightDirectionVC${lc}; // normalized`,\n `uniform vec3 lightHalfAngleVC${lc}; // normalized`,\n ]);\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n sstring\n ).result;\n\n sstring = [\n 'vec3 diffuseL = vec3(0,0,0);',\n ' vec3 specularL = vec3(0,0,0);',\n ' float df;',\n ];\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n ` df = max(0.0, dot(normalVCVSOutput, -lightDirectionVC${lc}));`,\n ` diffuseL += ((df${shadowFactor}) * lightColor${lc});`,\n ` if (dot(normalVCVSOutput, lightDirectionVC${lc}) < 0.0)`,\n ' {',\n ` float sf = pow( max(0.0, dot(lightHalfAngleVC${lc},normalVCVSOutput)), specularPower);`,\n ` specularL += ((sf${shadowFactor}) * lightColor${lc});`,\n ' }',\n ]);\n }\n sstring = sstring.concat([\n ' diffuseL = diffuseL * diffuseColor;',\n ' specularL = specularL * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ]);\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n sstring,\n false\n ).result;\n break;\n\n case 3: // positional\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n `uniform vec3 lightColor${lc};`,\n `uniform vec3 lightDirectionVC${lc}; // normalized`,\n `uniform vec3 lightHalfAngleVC${lc}; // normalized`,\n `uniform vec3 lightPositionVC${lc};`,\n `uniform vec3 lightAttenuation${lc};`,\n `uniform float lightConeAngle${lc};`,\n `uniform float lightExponent${lc};`,\n `uniform int lightPositional${lc};`,\n ]);\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n sstring\n ).result;\n\n sstring = [\n 'vec3 diffuseL = vec3(0,0,0);',\n ' vec3 specularL = vec3(0,0,0);',\n ' vec3 vertLightDirectionVC;',\n ' float attenuation;',\n ' float df;',\n ];\n for (let lc = 0; lc < lastLightCount; ++lc) {\n sstring = sstring.concat([\n ' attenuation = 1.0;',\n ` if (lightPositional${lc} == 0)`,\n ' {',\n ` vertLightDirectionVC = lightDirectionVC${lc};`,\n ' }',\n ' else',\n ' {',\n ` vertLightDirectionVC = vertexVC.xyz - lightPositionVC${lc};`,\n ' float distanceVC = length(vertLightDirectionVC);',\n ' vertLightDirectionVC = normalize(vertLightDirectionVC);',\n ' attenuation = 1.0 /',\n ` (lightAttenuation${lc}.x`,\n ` + lightAttenuation${lc}.y * distanceVC`,\n ` + lightAttenuation${lc}.z * distanceVC * distanceVC);`,\n ' // per OpenGL standard cone angle is 90 or less for a spot light',\n ` if (lightConeAngle${lc} <= 90.0)`,\n ' {',\n ` float coneDot = dot(vertLightDirectionVC, lightDirectionVC${lc});`,\n ' // if inside the cone',\n ` if (coneDot >= cos(radians(lightConeAngle${lc})))`,\n ' {',\n ` attenuation = attenuation * pow(coneDot, lightExponent${lc});`,\n ' }',\n ' else',\n ' {',\n ' attenuation = 0.0;',\n ' }',\n ' }',\n ' }',\n ' df = max(0.0, attenuation*dot(normalVCVSOutput, -vertLightDirectionVC));',\n ` diffuseL += ((df${shadowFactor}) * lightColor${lc});`,\n ' if (dot(normalVCVSOutput, vertLightDirectionVC) < 0.0)',\n ' {',\n ` float sf = attenuation*pow( max(0.0, dot(lightHalfAngleVC${lc},normalVCVSOutput)), specularPower);`,\n ` specularL += ((sf${shadowFactor}) * lightColor${lc});`,\n ' }',\n ]);\n }\n sstring = sstring.concat([\n ' diffuseL = diffuseL * diffuseColor;',\n ' specularL = specularL * specularColor;',\n ' gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);',\n ' //VTK::Light::Impl',\n ]);\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n sstring,\n false\n ).result;\n break;\n default:\n vtkErrorMacro('bad light complexity');\n }\n\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderNormal = (shaders, ren, actor) => {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (lastLightComplexity > 0) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n if (model.lastBoundBO.getCABO().getNormalOffset()) {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Normal::Dec', [\n 'attribute vec3 normalMC;',\n 'uniform mat3 normalMatrix;',\n 'varying vec3 normalVCVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Impl',\n ['normalVCVSOutput = normalMatrix * normalMC;']\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Normal::Dec', [\n 'in vec3 normalVCVSOutput[];',\n 'out vec3 normalVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::Normal::Impl',\n ['normalVCGSOutput = normalVCVSOutput[i];']\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'varying vec3 normalVCVSOutput;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput = normalize(normalVCVSOutput);',\n // if (!gl_FrontFacing) does not work in intel hd4000 mac\n // if (int(gl_FrontFacing) == 0) does not work on mesa\n ' if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }',\n ]\n ).result;\n } else {\n if (model.haveCellNormals) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n ['uniform mat3 normalMatrix;', 'uniform samplerBuffer textureN;']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput = normalize(normalMatrix *',\n ' texelFetchBuffer(textureN, gl_PrimitiveID + PrimitiveIDOffset).xyz);',\n ' if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }',\n ]\n ).result;\n } else {\n if (\n publicAPI.getOpenGLMode(\n actor.getProperty().getRepresentation(),\n model.lastBoundBO.getPrimitiveType()\n ) === model.context.LINES\n ) {\n // generate a normal for lines, it will be perpendicular to the line\n // and maximally aligned with the camera view direction\n // no clue if this is the best way to do this.\n // the code below has been optimized a bit so what follows is\n // an explanation of the basic approach. Compute the gradient of the line\n // with respect to x and y, the the larger of the two\n // cross that with the camera view direction. That gives a vector\n // orthogonal to the camera view and the line. Note that the line and the camera\n // view are probably not orthogonal. Which is why when we cross result that with\n // the line gradient again we get a reasonable normal. It will be othogonal to\n // the line (which is a plane but maximally aligned with the camera view.\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n ' vec3 fdx = vec3(dFdx(vertexVC.x),dFdx(vertexVC.y),dFdx(vertexVC.z));',\n ' vec3 fdy = vec3(dFdy(vertexVC.x),dFdy(vertexVC.y),dFdy(vertexVC.z));',\n ' //VTK::UniformFlow::Impl',\n ] // For further replacements\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec3 normalVCVSOutput;',\n ' fdx = normalize(fdx);',\n ' fdy = normalize(fdy);',\n ' if (abs(fdx.x) > 0.0)',\n ' { normalVCVSOutput = normalize(cross(vec3(fdx.y, -fdx.x, 0.0), fdx)); }',\n ' else { normalVCVSOutput = normalize(cross(vec3(fdy.y, -fdy.x, 0.0), fdy));}',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n ['uniform int cameraParallel;']\n ).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n // ' vec3 fdx = vec3(dFdx(vertexVC.x),dFdx(vertexVC.y),dFdx(vertexVC.z));',\n // ' vec3 fdy = vec3(dFdy(vertexVC.x),dFdy(vertexVC.y),dFdy(vertexVC.z));',\n ' vec3 fdx = dFdx(vertexVC.xyz);',\n ' vec3 fdy = dFdy(vertexVC.xyz);',\n ' //VTK::UniformFlow::Impl',\n ] // For further replacements\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n ' fdx = normalize(fdx);',\n ' fdy = normalize(fdy);',\n ' vec3 normalVCVSOutput = normalize(cross(fdx,fdy));',\n // the code below is faster, but does not work on some devices\n // 'vec3 normalVC = normalize(cross(dFdx(vertexVC.xyz), dFdy(vertexVC.xyz)));',\n ' if (cameraParallel == 1 && normalVCVSOutput.z < 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }',\n ' if (cameraParallel == 0 && dot(normalVCVSOutput,vertexVC.xyz) > 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }',\n ]\n ).result;\n }\n }\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderPositionVC = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n // for points make sure to add in the point size\n if (\n actor.getProperty().getRepresentation() === Representation.POINTS ||\n model.lastBoundBO.getPrimitiveType() === primTypes.Points\n ) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n '//VTK::PositionVC::Impl',\n ` gl_PointSize = ${actor\n .getProperty()\n .getPointSize()\n .toFixed(1)};`,\n ],\n false\n ).result;\n }\n\n // do we need the vertex in the shader in View Coordinates\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity > 0) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Dec',\n ['varying vec4 vertexVCVSOutput;']\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vertexVCVSOutput = MCVCMatrix * vertexMC;',\n ' gl_Position = MCDCMatrix * vertexMC;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::PositionVC::Dec',\n ['in vec4 vertexVCVSOutput[];', 'out vec4 vertexVCGSOutput;']\n ).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::PositionVC::Impl',\n ['vertexVCGSOutput = vertexVCVSOutput[i];']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Dec',\n ['varying vec4 vertexVCVSOutput;']\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ['vec4 vertexVC = vertexVCVSOutput;']\n ).result;\n } else {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [' gl_Position = MCDCMatrix * vertexMC;']\n ).result;\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.replaceShaderTCoord = (shaders, ren, actor) => {\n if (model.lastBoundBO.getCABO().getTCoordOffset()) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n if (model.drawingEdges) {\n return;\n }\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCVSOutput = tcoordMC;'\n ).result;\n\n // we only handle the first texture by default\n // additional textures are activated and we set the uniform\n // for the texture unit they are assigned to, but you have to\n // add in the shader code to do something with them\n const tus = model.openGLActor.getActiveTextures();\n let tNumComp = 2;\n let tcdim = 2;\n if (tus && tus.length > 0) {\n tNumComp = tus[0].getComponents();\n if (tus[0].getTarget() === model.context.TEXTURE_CUBE_MAP) {\n tcdim = 3;\n }\n }\n if (model.renderable.getColorTextureMap()) {\n tNumComp = model.renderable\n .getColorTextureMap()\n .getPointData()\n .getScalars()\n .getNumberOfComponents();\n tcdim = 2;\n }\n\n if (tcdim === 2) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;'\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::TCoord::Dec', [\n 'in vec2 tcoordVCVSOutput[];',\n 'out vec2 tcoordVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCGSOutput = tcoordVCVSOutput[i];'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec2 tcoordVCVSOutput;',\n 'uniform sampler2D texture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,1.0);',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,tcolor.g);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*texture2D(texture1, tcoordVCVSOutput.st);'\n ).result;\n }\n } else {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;'\n ).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::TCoord::Dec', [\n 'in vec3 tcoordVCVSOutput[];',\n 'out vec3 tcoordVCGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCGSOutput = tcoordVCVSOutput[i];'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec3 tcoordVCVSOutput;',\n 'uniform samplerCube texture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,1.0);',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*',\n ' vec4(tcolor.r,tcolor.r,tcolor.r,tcolor.g);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n 'gl_FragData[0] = clamp(gl_FragData[0],0.0,1.0)*textureCube(texture1, tcoordVCVSOutput);'\n ).result;\n }\n }\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderClip = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n if (model.renderable.getNumberOfClippingPlanes()) {\n let numClipPlanes = model.renderable.getNumberOfClippingPlanes();\n if (numClipPlanes > 6) {\n macro.vtkErrorMacro('OpenGL has a limit of 6 clipping planes');\n numClipPlanes = 6;\n }\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Clip::Dec', [\n 'uniform int numClipPlanes;',\n 'uniform vec4 clipPlanes[6];',\n 'varying float clipDistancesVSOutput[6];',\n ]).result;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Clip::Impl', [\n 'for (int planeNum = 0; planeNum < 6; planeNum++)',\n ' {',\n ' if (planeNum >= numClipPlanes)',\n ' {',\n ' break;',\n ' }',\n ' clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);',\n ' }',\n ]).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Clip::Dec', [\n 'uniform int numClipPlanes;',\n 'varying float clipDistancesVSOutput[6];',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Clip::Impl', [\n 'for (int planeNum = 0; planeNum < 6; planeNum++)',\n ' {',\n ' if (planeNum >= numClipPlanes)',\n ' {',\n ' break;',\n ' }',\n ' if (clipDistancesVSOutput[planeNum] < 0.0) discard;',\n ' }',\n ]).result;\n }\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getCoincidentParameters = (ren, actor) => {\n // 1. ResolveCoincidentTopology is On and non zero for this primitive\n // type\n let cp = null;\n const prop = actor.getProperty();\n if (\n model.renderable.getResolveCoincidentTopology() ||\n (prop.getEdgeVisibility() &&\n prop.getRepresentation() === Representation.SURFACE)\n ) {\n const primType = model.lastBoundBO.getPrimitiveType();\n if (\n primType === primTypes.Points ||\n prop.getRepresentation() === Representation.POINTS\n ) {\n cp = model.renderable.getCoincidentTopologyPointOffsetParameter();\n } else if (\n primType === primTypes.Lines ||\n prop.getRepresentation() === Representation.WIREFRAME\n ) {\n cp = model.renderable.getCoincidentTopologyLineOffsetParameters();\n } else if (\n primType === primTypes.Tris ||\n primType === primTypes.TriStrips\n ) {\n cp = model.renderable.getCoincidentTopologyPolygonOffsetParameters();\n }\n if (\n primType === primTypes.TrisEdges ||\n primType === primTypes.TriStripsEdges\n ) {\n cp = model.renderable.getCoincidentTopologyPolygonOffsetParameters();\n cp.factor /= 2.0;\n cp.offset /= 2.0;\n }\n }\n\n // hardware picking always offset due to saved zbuffer\n // This gets you above the saved surface depth buffer.\n // vtkHardwareSelector* selector = ren->GetSelector();\n // if (selector &&\n // selector->GetFieldAssociation() == vtkDataObject::FIELD_ASSOCIATION_POINTS)\n // {\n // offset -= 2.0;\n // return;\n // }\n return cp;\n };\n\n publicAPI.replaceShaderCoincidentOffset = (shaders, ren, actor) => {\n const cp = publicAPI.getCoincidentParameters(ren, actor);\n\n // if we need an offset handle it here\n // The value of .000016 is suitable for depth buffers\n // of at least 16 bit depth. We do not query the depth\n // right now because we would need some mechanism to\n // cache the result taking into account FBO changes etc.\n if (cp && (cp.factor !== 0.0 || cp.offset !== 0.0)) {\n let FSSource = shaders.Fragment;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Coincident::Dec',\n ['uniform float cfactor;', 'uniform float coffset;']\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n if (cp.factor !== 0.0) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::UniformFlow::Impl',\n [\n 'float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));',\n '//VTK::UniformFlow::Impl',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;'\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Depth::Impl',\n 'gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;'\n ).result;\n }\n }\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderPicking = (shaders, ren, actor) => {\n if (model.openGLRenderer.getSelector()) {\n let FSSource = shaders.Fragment;\n switch (model.openGLRenderer.getSelector().getCurrentPass()) {\n case PassTypes.ID_LOW24:\n // FSSource = vtkShaderProgram.substitute(FSSource,\n // '//VTK::Picking::Impl', [\n // ' int idx = gl_PrimitiveID + 1 + PrimitiveIDOffset;',\n // ' gl_FragData[0] = vec4(float(idx%256)/255.0, float((idx/256)%256)/255.0, float((idx/65536)%256)/255.0, 1.0);',\n // ], false).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n ' gl_FragData[0] = vec4(mapperIndex,1.0);'\n ).result;\n }\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n publicAPI.replaceShaderColor(shaders, ren, actor);\n publicAPI.replaceShaderNormal(shaders, ren, actor);\n publicAPI.replaceShaderLight(shaders, ren, actor);\n publicAPI.replaceShaderTCoord(shaders, ren, actor);\n publicAPI.replaceShaderPicking(shaders, ren, actor);\n publicAPI.replaceShaderClip(shaders, ren, actor);\n publicAPI.replaceShaderCoincidentOffset(shaders, ren, actor);\n publicAPI.replaceShaderPositionVC(shaders, ren, actor);\n\n if (model.renderDepth) {\n let FSSource = shaders.Fragment;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'float iz = floor(gl_FragCoord.z*65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0);',\n ]).result;\n shaders.Fragment = FSSource;\n }\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n let lightComplexity = 0;\n let numberOfLights = 0;\n\n const primType = cellBO.getPrimitiveType();\n\n let needLighting = true;\n\n const poly = model.currentInput;\n\n let n =\n actor.getProperty().getInterpolation() !== Shading.FLAT\n ? poly.getPointData().getNormals()\n : null;\n if (n === null && poly.getCellData().getNormals()) {\n n = poly.getCellData().getNormals();\n }\n\n const haveNormals = n !== null;\n\n if (\n actor.getProperty().getRepresentation() === Representation.POINTS ||\n primType === primTypes.Points\n ) {\n needLighting = haveNormals;\n }\n\n // do we need lighting?\n if (actor.getProperty().getLighting() && needLighting) {\n // consider the lighting complexity to determine which case applies\n // simple headlight, Light Kit, the whole feature set of VTK\n lightComplexity = 0;\n const lights = ren.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0) {\n numberOfLights++;\n if (lightComplexity === 0) {\n lightComplexity = 1;\n }\n }\n\n if (\n lightComplexity === 1 &&\n (numberOfLights > 1 ||\n light.getIntensity() !== 1.0 ||\n !light.lightTypeIsHeadLight())\n ) {\n lightComplexity = 2;\n }\n if (lightComplexity < 3 && light.getPositional()) {\n lightComplexity = 3;\n }\n }\n }\n\n let needRebuild = false;\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n const lastLightCount = model.lastBoundBO.getReferenceByName(\n 'lastLightCount'\n );\n if (\n lastLightComplexity !== lightComplexity ||\n lastLightCount !== numberOfLights\n ) {\n model.lastBoundBO.set({ lastLightComplexity: lightComplexity }, true);\n model.lastBoundBO.set({ lastLightCount: numberOfLights }, true);\n needRebuild = true;\n }\n\n const selector = model.openGLRenderer.getSelector();\n const selectionPass = selector === null ? -1 : selector.getCurrentPass();\n if (\n model.lastBoundBO.getReferenceByName('lastSelectionPass') !==\n selectionPass\n ) {\n model.lastBoundBO.set({ lastSelectionPass: selectionPass }, true);\n needRebuild = true;\n }\n\n const toString = `${model.renderDepth}`;\n\n // has something changed that would require us to recreate the shader?\n // candidates are\n // property modified (representation interpolation and lighting)\n // input modified\n // light complexity changed\n if (\n model.shaderRebuildString !== toString ||\n cellBO.getProgram() === 0 ||\n cellBO.getShaderSourceTime().getMTime() < publicAPI.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < actor.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.renderable.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.currentInput.getMTime() ||\n needRebuild\n ) {\n model.shaderRebuildString = toString;\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setLightingShaderParameters(cellBO, ren, actor);\n\n const listCallbacks = model.renderable.getViewSpecificProperties()\n .ShadersCallbacks;\n if (listCallbacks) {\n listCallbacks.forEach((object) => {\n object.callback(object.userData, cellBO, ren, actor);\n });\n }\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n if (cellBO.getProgram().isUniformUsed('PrimitiveIDOffset')) {\n cellBO\n .getProgram()\n .setUniformi('PrimitiveIDOffset', model.primitiveIDOffset);\n }\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (cellBO.getProgram().isAttributeUsed('vertexMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'vertexMC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro('Error setting vertexMC in shader VAO.');\n }\n }\n if (\n cellBO.getProgram().isAttributeUsed('normalMC') &&\n cellBO.getCABO().getNormalOffset() &&\n lastLightComplexity > 0\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'normalMC',\n cellBO.getCABO().getNormalOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro('Error setting normalMC in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('normalMC');\n }\n if (\n cellBO.getProgram().isAttributeUsed('tcoordMC') &&\n cellBO.getCABO().getTCoordOffset()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'tcoordMC',\n cellBO.getCABO().getTCoordOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n cellBO.getCABO().getTCoordComponents(),\n false\n )\n ) {\n vtkErrorMacro('Error setting tcoordMC in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('tcoordMC');\n }\n if (\n cellBO.getProgram().isAttributeUsed('scalarColor') &&\n cellBO.getCABO().getColorComponents()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO().getColorBO(),\n 'scalarColor',\n cellBO.getCABO().getColorOffset(),\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_BYTE,\n 4,\n true\n )\n ) {\n vtkErrorMacro('Error setting scalarColor in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('scalarColor');\n }\n\n cellBO.getAttributeUpdateTime().modified();\n }\n\n if (model.renderable.getNumberOfClippingPlanes()) {\n // add all the clipping planes\n let numClipPlanes = model.renderable.getNumberOfClippingPlanes();\n if (numClipPlanes > 6) {\n macro.vtkErrorMacro('OpenGL has a limit of 6 clipping planes');\n numClipPlanes = 6;\n }\n const planeEquations = [];\n for (let i = 0; i < numClipPlanes; i++) {\n const planeEquation = [];\n model.renderable.getClippingPlaneInDataCoords(\n actor.getMatrix(),\n i,\n planeEquation\n );\n\n for (let j = 0; j < 4; j++) {\n planeEquations.push(planeEquation[j]);\n }\n }\n cellBO.getProgram().setUniformi('numClipPlanes', numClipPlanes);\n cellBO.getProgram().setUniform4fv('clipPlanes', 6, planeEquations);\n }\n\n if (\n model.internalColorTexture &&\n cellBO.getProgram().isUniformUsed('texture1')\n ) {\n cellBO\n .getProgram()\n .setUniformi('texture1', model.internalColorTexture.getTextureUnit());\n }\n const tus = model.openGLActor.getActiveTextures();\n if (tus) {\n for (let index = 0; index < tus.length; ++index) {\n const tex = tus[index];\n const texUnit = tex.getTextureUnit();\n const tname = `texture${texUnit + 1}`;\n if (cellBO.getProgram().isUniformUsed(tname)) {\n cellBO.getProgram().setUniformi(tname, texUnit);\n }\n }\n }\n\n // handle coincident\n if (cellBO.getProgram().isUniformUsed('coffset')) {\n const cp = publicAPI.getCoincidentParameters(ren, actor);\n cellBO.getProgram().setUniformf('coffset', cp.offset);\n // cfactor isn't always used when coffset is.\n if (cellBO.getProgram().isUniformUsed('cfactor')) {\n cellBO.getProgram().setUniformf('cfactor', cp.factor);\n }\n }\n\n const selector = model.openGLRenderer.getSelector();\n if (selector && cellBO.getProgram().isUniformUsed('mapperIndex')) {\n if (selector.getCurrentPass() < PassTypes.ID_LOW24) {\n cellBO\n .getProgram()\n .setUniform3fArray('mapperIndex', selector.getPropColorValue());\n }\n }\n };\n\n publicAPI.setLightingShaderParameters = (cellBO, ren, actor) => {\n // for unlit and headlight there are no lighting parameters\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity < 2) {\n return;\n }\n\n const program = cellBO.getProgram();\n\n // bind some light settings\n let numberOfLights = 0;\n\n const lights = ren.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0.0) {\n const dColor = light.getColorByReference();\n const intensity = light.getIntensity();\n model.lightColor[0] = dColor[0] * intensity;\n model.lightColor[1] = dColor[1] * intensity;\n model.lightColor[2] = dColor[2] * intensity;\n // get required info from light\n const ld = light.getDirection();\n model.lightDirection[0] = ld[0];\n model.lightDirection[1] = ld[1];\n model.lightDirection[2] = ld[2];\n model.lightHalfAngle[0] = -model.lightDirection[0];\n model.lightHalfAngle[1] = -model.lightDirection[1];\n model.lightHalfAngle[2] = -model.lightDirection[2] + 1.0;\n vtkMath.normalize(model.lightDirection);\n program.setUniform3fArray(\n `lightColor${numberOfLights}`,\n model.lightColor\n );\n program.setUniform3fArray(\n `lightDirectionVC${numberOfLights}`,\n model.lightDirection\n );\n program.setUniform3fArray(\n `lightHalfAngleVC${numberOfLights}`,\n model.lightHalfAngle\n );\n numberOfLights++;\n }\n }\n\n // we are done unless we have positional lights\n if (lastLightComplexity < 3) {\n return;\n }\n\n // for lightkit case there are some parameters to set\n const cam = ren.getActiveCamera();\n const viewTF = cam.getViewMatrix();\n mat4.transpose(viewTF, viewTF);\n\n numberOfLights = 0;\n\n for (let index = 0; index < lights.length; ++index) {\n const light = lights[index];\n const status = light.getSwitch();\n if (status > 0.0) {\n const lp = light.getTransformedPosition();\n const np = vec3.fromValues(lp[0], lp[1], lp[2]);\n vec3.transformMat4(np, np, viewTF);\n program.setUniform3fArray(\n `lightAttenuation${numberOfLights}`,\n light.getAttenuationValuesByReference()\n );\n program.setUniformi(\n `lightPositional${numberOfLights}`,\n light.getPositional()\n );\n program.setUniformf(\n `lightExponent${numberOfLights}`,\n light.getExponent()\n );\n program.setUniformf(\n `lightConeAngle${numberOfLights}`,\n light.getConeAngle()\n );\n program.setUniform3fArray(`lightPositionVC${numberOfLights}`, [\n np[0],\n np[1],\n np[2],\n ]);\n numberOfLights++;\n }\n }\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n const cam = ren.getActiveCamera();\n\n const camm = model.openGLCamera.getKeyMatrixTime().getMTime();\n const progm = program.getLastCameraMTime();\n\n if (progm !== camm) {\n if (actor.getIsIdentity()) {\n program.setUniformMatrix('MCDCMatrix', keyMats.wcdc);\n if (program.isUniformUsed('MCVCMatrix')) {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n if (program.isUniformUsed('normalMatrix')) {\n program.setUniformMatrix3x3('normalMatrix', keyMats.normalMatrix);\n }\n }\n if (program.isUniformUsed('cameraParallel')) {\n program.setUniformi('cameraParallel', cam.getParallelProjection());\n }\n program.setLastCameraMTime(camm);\n }\n\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n if (program.isUniformUsed('normalMatrix')) {\n const anorms = mat3.create();\n mat3.multiply(anorms, keyMats.normalMatrix, actMats.normalMatrix);\n program.setUniformMatrix3x3('normalMatrix', anorms);\n }\n mat4.identity(model.tmpMat4);\n mat4.multiply(model.tmpMat4, keyMats.wcdc, actMats.mcwc);\n program.setUniformMatrix('MCDCMatrix', model.tmpMat4);\n if (program.isUniformUsed('MCVCMatrix')) {\n mat4.multiply(model.tmpMat4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', model.tmpMat4);\n }\n // reset the cam mtime as actor modified the shader values\n program.setLastCameraMTime(0);\n }\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const ppty = actor.getProperty();\n\n const opacity = ppty.getOpacity();\n program.setUniformf('opacityUniform', opacity);\n\n const aColor = model.drawingEdges\n ? ppty.getEdgeColorByReference()\n : ppty.getAmbientColorByReference();\n program.setUniform3fArray('ambientColorUniform', aColor);\n program.setUniformf('ambient', ppty.getAmbient());\n\n const dColor = model.drawingEdges\n ? ppty.getEdgeColorByReference()\n : ppty.getDiffuseColorByReference();\n program.setUniform3fArray('diffuseColorUniform', dColor);\n program.setUniformf('diffuse', ppty.getDiffuse());\n\n // we are done unless we have lighting\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity < 1) {\n return;\n }\n const sColor = ppty.getSpecularColorByReference();\n program.setUniform3fArray('specularColorUniform', sColor);\n program.setUniformf('specular', ppty.getSpecular());\n program.setUniformf('specularPowerUniform', ppty.getSpecularPower());\n\n // // now set the backface properties if we have them\n // if (actor.getBackfaceProperty() && !model.DrawingEdges)\n // {\n // ppty = actor.getBackfaceProperty();\n\n // let opacity = static_cast(ppty.getOpacity());\n // double *aColor = ppty.getAmbientColor();\n // double aIntensity = ppty.getAmbient(); // ignoring renderer ambient\n // let ambientColor[3] = {static_cast(aColor[0] * aIntensity),\n // static_cast(aColor[1] * aIntensity),\n // static_cast(aColor[2] * aIntensity)};\n // double *dColor = ppty.getDiffuseColor();\n // double dIntensity = ppty.getDiffuse();\n // let diffuseColor[3] = {static_cast(dColor[0] * dIntensity),\n // static_cast(dColor[1] * dIntensity),\n // static_cast(dColor[2] * dIntensity)};\n // double *sColor = ppty.getSpecularColor();\n // double sIntensity = ppty.getSpecular();\n // let specularColor[3] = {static_cast(sColor[0] * sIntensity),\n // static_cast(sColor[1] * sIntensity),\n // static_cast(sColor[2] * sIntensity)};\n // double specularPower = ppty.getSpecularPower();\n\n // program.SetUniformf('opacityUniformBF', opacity);\n // program.SetUniform3f('ambientColorUniformBF', ambientColor);\n // program.SetUniform3f('diffuseColorUniformBF', diffuseColor);\n // // we are done unless we have lighting\n // if (model.LastLightComplexity[&cellBO] < 1)\n // {\n // return;\n // }\n // program.SetUniform3f('specularColorUniformBF', specularColor);\n // program.SetUniformf('specularPowerUniformBF', specularPower);\n // }\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n model.primitiveIDOffset = 0;\n\n if (model.openGLRenderer.getSelector()) {\n switch (model.openGLRenderer.getSelector().getCurrentPass()) {\n default:\n model.openGLRenderer.getSelector().renderProp(actor);\n }\n }\n\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // If we are coloring by texture, then load the texture map.\n // Use Map as indicator, because texture hangs around.\n if (model.renderable.getColorTextureMap()) {\n model.internalColorTexture.activate();\n }\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const representation = actor.getProperty().getRepresentation();\n\n const gl = model.context;\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // for every primitive type\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n // if there are entries\n const cabo = model.primitives[i].getCABO();\n if (cabo.getElementCount()) {\n // are we drawing edges\n model.drawingEdges =\n drawSurfaceWithEdges &&\n (i === primTypes.TrisEdges || i === primTypes.TriStripsEdges);\n publicAPI.updateShaders(model.primitives[i], ren, actor);\n const mode = publicAPI.getOpenGLMode(representation, i);\n gl.drawArrays(mode, 0, cabo.getElementCount());\n\n const stride =\n (mode === gl.POINTS ? 1 : 0) || (mode === gl.LINES ? 2 : 3);\n model.primitiveIDOffset += cabo.getElementCount() / stride;\n }\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => {\n if (rep === Representation.POINTS || type === primTypes.Points) {\n return model.context.POINTS;\n }\n if (\n rep === Representation.WIREFRAME ||\n type === primTypes.Lines ||\n type === primTypes.TrisEdges ||\n type === primTypes.TriStripsEdges\n ) {\n return model.context.LINES;\n }\n return model.context.TRIANGLES;\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {\n if (model.LastBoundBO) {\n model.LastBoundBO.getVAO().release();\n }\n if (model.renderable.getColorTextureMap()) {\n model.internalColorTexture.deactivate();\n }\n };\n\n publicAPI.renderPiece = (ren, actor) => {\n // Make sure that we have been properly initialized.\n // if (ren.getRenderWindow().checkAbortStatus()) {\n // return;\n // }\n\n publicAPI.invokeEvent(StartEvent);\n if (!model.renderable.getStatic()) {\n model.renderable.update();\n }\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent(EndEvent);\n\n if (model.currentInput === null) {\n vtkErrorMacro('No input!');\n return;\n }\n\n // if there are no points then we are done\n if (\n !model.currentInput.getPoints ||\n !model.currentInput.getPoints().getNumberOfValues()\n ) {\n return;\n }\n\n // apply faceCulling\n const gl = model.context;\n const backfaceCulling = actor.getProperty().getBackfaceCulling();\n const frontfaceCulling = actor.getProperty().getFrontfaceCulling();\n if (!backfaceCulling && !frontfaceCulling) {\n model.openGLRenderWindow.disableCullFace();\n } else if (frontfaceCulling) {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.FRONT);\n } else {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.BACK);\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.bounds);\n return;\n }\n model.bounds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n // Note that the actor's mtime includes it's properties mtime\n const vmtime = model.VBOBuildTime.getMTime();\n if (\n vmtime < publicAPI.getMTime() ||\n vmtime < model.renderable.getMTime() ||\n vmtime < actor.getMTime() ||\n vmtime < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n model.haveCellScalars = false;\n const scalarMode = model.renderable.getScalarMode();\n if (model.renderable.getScalarVisibility()) {\n // We must figure out how the scalars should be mapped to the polydata.\n if (\n (scalarMode === ScalarMode.USE_CELL_DATA ||\n scalarMode === ScalarMode.USE_CELL_FIELD_DATA ||\n scalarMode === ScalarMode.USE_FIELD_DATA ||\n !poly.getPointData().getScalars()) &&\n scalarMode !== ScalarMode.USE_POINT_FIELD_DATA &&\n c\n ) {\n model.haveCellScalars = true;\n }\n }\n\n // Do we have normals?\n let n =\n actor.getProperty().getInterpolation() !== Shading.FLAT\n ? poly.getPointData().getNormals()\n : null;\n if (n === null && poly.getCellData().getNormals()) {\n model.haveCellNormals = true;\n n = poly.getCellData().getNormals();\n }\n\n // rebuild the VBO if the data has changed we create a string for the VBO what\n // can change the VBO? points normals tcoords colors so what can change those?\n // the input data is clearly one as it can change all four items tcoords may\n // haveTextures or not colors may change based on quite a few mapping\n // parameters in the mapper\n\n const representation = actor.getProperty().getRepresentation();\n\n let tcoords = poly.getPointData().getTCoords();\n if (!model.openGLActor.getActiveTextures()) {\n tcoords = null;\n }\n\n // handle color mapping via texture\n if (model.renderable.getColorCoordinates()) {\n tcoords = model.renderable.getColorCoordinates();\n if (!model.internalColorTexture) {\n model.internalColorTexture = vtkOpenGLTexture.newInstance();\n }\n const tex = model.internalColorTexture;\n // the following 4 lines allow for NPOT textures\n tex.setMinificationFilter(Filter.NEAREST);\n tex.setMagnificationFilter(Filter.NEAREST);\n tex.setWrapS(Wrap.CLAMP_TO_EDGE);\n tex.setWrapT(Wrap.CLAMP_TO_EDGE);\n tex.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n const input = model.renderable.getColorTextureMap();\n const ext = input.getExtent();\n const inScalars = input.getPointData().getScalars();\n tex.create2DFromRaw(\n ext[1] - ext[0] + 1,\n ext[3] - ext[2] + 1,\n inScalars.getNumberOfComponents(),\n inScalars.getDataType(),\n inScalars.getData()\n );\n tex.activate();\n tex.sendParameters();\n tex.deactivate();\n }\n\n const toString =\n `${poly.getMTime()}A${representation}B${poly.getMTime()}` +\n `C${n ? n.getMTime() : 1}D${c ? c.getMTime() : 1}` +\n `E${actor.getProperty().getEdgeVisibility()}` +\n `F${tcoords ? tcoords.getMTime() : 1}`;\n if (model.VBOBuildString !== toString) {\n // Build the VBOs\n const points = poly.getPoints();\n const options = {\n points,\n normals: n,\n tcoords,\n colors: c,\n cellOffset: 0,\n haveCellScalars: model.haveCellScalars,\n haveCellNormals: model.haveCellNormals,\n };\n options.cellOffset += model.primitives[primTypes.Points]\n .getCABO()\n .createVBO(poly.getVerts(), 'verts', representation, options);\n options.cellOffset += model.primitives[primTypes.Lines]\n .getCABO()\n .createVBO(poly.getLines(), 'lines', representation, options);\n options.cellOffset += model.primitives[primTypes.Tris]\n .getCABO()\n .createVBO(poly.getPolys(), 'polys', representation, options);\n options.cellOffset += model.primitives[primTypes.TriStrips]\n .getCABO()\n .createVBO(poly.getStrips(), 'strips', representation, options);\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // if we have edge visibility build the edge VBOs\n if (drawSurfaceWithEdges) {\n model.primitives[primTypes.TrisEdges]\n .getCABO()\n .createVBO(poly.getPolys(), 'polys', Representation.WIREFRAME, {\n points,\n normals: n,\n tcoords: null,\n colors: null,\n cellOffset: 0,\n haveCellScalars: false,\n haveCellNormals: false,\n });\n model.primitives[primTypes.TriStripsEdges]\n .getCABO()\n .createVBO(poly.getStrips(), 'strips', Representation.WIREFRAME, {\n points,\n normals: n,\n tcoords: null,\n colors: null,\n cellOffset: 0,\n haveCellScalars: false,\n haveCellNormals: false,\n });\n } else {\n // otherwise free them\n model.primitives[primTypes.TrisEdges].releaseGraphicsResources(\n model.openGLRenderWindow\n );\n model.primitives[primTypes.TriStripsEdges].releaseGraphicsResources(\n model.openGLRenderWindow\n );\n }\n\n model.VBOBuildTime.modified();\n model.VBOBuildString = toString;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n VBOBuildTime: 0,\n VBOBuildString: null,\n primitives: null,\n primTypes: null,\n shaderRebuildString: null,\n tmpMat4: null,\n ambientColor: [], // used internally\n diffuseColor: [], // used internally\n specularColor: [], // used internally\n lightColor: [], // used internally\n lightHalfAngle: [], // used internally\n lightDirection: [], // used internally\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.primitives = [];\n model.primTypes = primTypes;\n\n model.tmpMat4 = mat4.create();\n\n for (let i = primTypes.Start; i < primTypes.End; i++) {\n model.primitives[i] = vtkHelper.newInstance();\n model.primitives[i].setPrimitiveType(i);\n model.primitives[i].set(\n { lastLightComplexity: 0, lastLightCount: 0, lastSelectionPass: -1 },\n true\n );\n }\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime, { mtime: 0 });\n\n // Object methods\n vtkOpenGLPolyDataMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLPolyDataMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/PolyDataMapper/index.js","export const Wrap = {\n CLAMP_TO_EDGE: 0,\n REPEAT: 1,\n MIRRORED_REPEAT: 2,\n};\n\nexport const Filter = {\n NEAREST: 0,\n LINEAR: 1,\n NEAREST_MIPMAP_NEAREST: 2,\n NEAREST_MIPMAP_LINEAR: 3,\n LINEAR_MIPMAP_NEAREST: 4,\n LINEAR_MIPMAP_LINEAR: 5,\n};\n\nexport default {\n Wrap,\n Filter,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Texture/Constants.js","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\nuniform int PrimitiveIDOffset;\\n\\n// VC position of this fragment\\n//VTK::PositionVC::Dec\\n\\n// optional color passed in from the vertex shader, vertexColor\\n//VTK::Color::Dec\\n\\n// optional surface normal declaration\\n//VTK::Normal::Dec\\n\\n// extra lighting parameters\\n//VTK::Light::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\n// picking support\\n//VTK::Picking::Dec\\n\\n// Depth Peeling Support\\n//VTK::DepthPeeling::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\n// Apple Bug\\n//VTK::PrimID::Dec\\n\\n// handle coincident offsets\\n//VTK::Coincident::Dec\\n\\nvoid main()\\n{\\n // VC position of this fragment. This should not branch/return/discard.\\n //VTK::PositionVC::Impl\\n\\n // Place any calls that require uniform flow (e.g. dFdx) here.\\n //VTK::UniformFlow::Impl\\n\\n // Set gl_FragDepth here (gl_FragCoord.z by default)\\n //VTK::Depth::Impl\\n\\n // Early depth peeling abort:\\n //VTK::DepthPeeling::PreColor\\n\\n // Apple Bug\\n //VTK::PrimID::Impl\\n\\n //VTK::Clip::Impl\\n\\n //VTK::Color::Impl\\n\\n // Generate the normal if we are not passed in one\\n //VTK::Normal::Impl\\n\\n //VTK::Light::Impl\\n\\n //VTK::TCoord::Impl\\n\\n if (gl_FragData[0].a <= 0.0)\\n {\\n discard;\\n }\\n\\n //VTK::DepthPeeling::Impl\\n\\n //VTK::Picking::Impl\\n\\n // handle coincident offsets\\n //VTK::Coincident::Impl\\n\\n //VTK::ZBuffer::Impl\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl\n// module id = 23\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\n\n/**\n * daikon.Dictionary\n * @type {{}|*}\n */\ndaikon.Dictionary = daikon.Dictionary || {};\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Dictionary.dictPrivate = {\n \"0207\" : {\n \"101F\" : [\"FE\", \"ElscintDataScale\"] // uses special Elscint double type (see Tag class)\n }\n};\n\n\ndaikon.Dictionary.dict = {\n \"0002\" : {\n \"0001\" : [\"OB\", \"FileMetaInformationVersion\"],\n \"0002\" : [\"UI\", \"MediaStoredSOPClassUID\"],\n \"0003\" : [\"UI\", \"MediaStoredSOPInstanceUID\"],\n \"0010\" : [\"UI\", \"TransferSyntaxUID\"],\n \"0012\" : [\"UI\", \"ImplementationClassUID\"],\n \"0013\" : [\"SH\", \"ImplementationVersionName\"],\n \"0016\" : [\"AE\", \"SourceApplicationEntityTitle\"],\n \"0100\" : [\"UI\", \"PrivateInformationCreatorUID\"],\n \"0102\" : [\"OB\", \"PrivateInformation\"]\n },\n \"0004\" : {\n \"1130\" : [\"CS\", \"FilesetID\"],\n \"1141\" : [\"CS\", \"FilesetDescriptorFileFileID\"],\n \"1142\" : [\"CS\", \"FilesetDescriptorFileFormat\"],\n \"1200\" : [\"UL\", \"RootDirectoryEntitysFirstDirectoryRecordOffset\"],\n \"1202\" : [\"UL\", \"RootDirectoryEntitysLastDirectoryRecordOffset\"],\n \"1212\" : [\"US\", \"File-setConsistenceFlag\"],\n \"1220\" : [\"SQ\", \"DirectoryRecordSequence\"],\n \"1400\" : [\"UL\", \"NextDirectoryRecordOffset\"],\n \"1410\" : [\"US\", \"RecordInuseFlag\"],\n \"1420\" : [\"UL\", \"ReferencedLowerlevelDirectoryEntityOffset\"],\n \"1430\" : [\"CS\", \"DirectoryRecordType\"],\n \"1432\" : [\"UI\", \"PrivateRecordUID\"],\n \"1500\" : [\"CS\", \"ReferencedFileID\"],\n \"1510\" : [\"UI\", \"ReferencedSOPClassUIDInFile\"],\n \"1511\" : [\"UI\", \"ReferencedSOPInstanceUIDInFile\"],\n \"1600\" : [\"UL\", \"NumberOfReferences\"]\n },\n \"0008\" : {\n \"0001\" : [\"UL\", \"LengthToEnd\"],\n \"0005\" : [\"CS\", \"SpecificCharacterSet\"],\n \"0006\" : [\"SQ\", \"LanguageCodeSequence\"],\n \"0008\" : [\"CS\", \"ImageType\"],\n \"0010\" : [\"SH\", \"RecognitionCode\"],\n \"0012\" : [\"DA\", \"InstanceCreationDate\"],\n \"0013\" : [\"TM\", \"InstanceCreationTime\"],\n \"0014\" : [\"UI\", \"InstanceCreatorUID\"],\n \"0016\" : [\"UI\", \"SOPClassUID\"],\n \"0018\" : [\"UI\", \"SOPInstanceUID\"],\n \"001A\" : [\"UI\", \"RelatedGeneralSOPClassUID\"],\n \"001B\" : [\"UI\", \"OriginalSpecializedSOPClassUID\"],\n \"0020\" : [\"DA\", \"StudyDate\"],\n \"0021\" : [\"DA\", \"SeriesDate\"],\n \"0022\" : [\"DA\", \"AcquisitionDate\"],\n \"0023\" : [\"DA\", \"ContentDate\"],\n \"0024\" : [\"DA\", \"OverlayDate\"],\n \"0025\" : [\"DA\", \"CurveDate\"],\n \"002A\" : [\"DT\", \"AcquisitionDateTime\"],\n \"0030\" : [\"TM\", \"StudyTime\"],\n \"0031\" : [\"TM\", \"SeriesTime\"],\n \"0032\" : [\"TM\", \"AcquisitionTime\"],\n \"0033\" : [\"TM\", \"ContentTime\"],\n \"0034\" : [\"TM\", \"OverlayTime\"],\n \"0035\" : [\"TM\", \"CurveTime\"],\n \"0040\" : [\"US\", \"DataSetType\"],\n \"0041\" : [\"LO\", \"DataSetSubtype\"],\n \"0042\" : [\"CS\", \"NuclearMedicineSeriesType\"],\n \"0050\" : [\"SH\", \"AccessionNumber\"],\n \"0051\" : [\"SQ\", \"IssuerOfAccessionNumberSequence\"],\n \"0052\" : [\"CS\", \"QueryRetrieveLevel\"],\n \"0054\" : [\"AE\", \"RetrieveAETitle\"],\n \"0056\" : [\"CS\", \"InstanceAvailability\"],\n \"0058\" : [\"UI\", \"FailedSOPInstanceUIDList\"],\n \"0060\" : [\"CS\", \"Modality\"],\n \"0061\" : [\"CS\", \"ModalitiesInStudy\"],\n \"0062\" : [\"UI\", \"SOPClassesInStudy\"],\n \"0064\" : [\"CS\", \"ConversionType\"],\n \"0068\" : [\"CS\", \"PresentationIntentType\"],\n \"0070\" : [\"LO\", \"Manufacturer\"],\n \"0080\" : [\"LO\", \"InstitutionName\"],\n \"0081\" : [\"ST\", \"InstitutionAddress\"],\n \"0082\" : [\"SQ\", \"InstitutionCodeSequence\"],\n \"0090\" : [\"PN\", \"ReferringPhysicianName\"],\n \"0092\" : [\"ST\", \"ReferringPhysicianAddress\"],\n \"0094\" : [\"SH\", \"ReferringPhysicianTelephoneNumbers\"],\n \"0096\" : [\"SQ\", \"ReferringPhysicianIdentificationSequence\"],\n \"0100\" : [\"SH\", \"CodeValue\"],\n \"0102\" : [\"SH\", \"CodingSchemeDesignator\"],\n \"0103\" : [\"SH\", \"CodingSchemeVersion\"],\n \"0104\" : [\"LO\", \"CodeMeaning\"],\n \"0105\" : [\"CS\", \"MappingResource\"],\n \"0106\" : [\"DT\", \"ContextGroupVersion\"],\n \"0107\" : [\"DT\", \"ContextGroupLocalVersion\"],\n \"010B\" : [\"CS\", \"ContextGroupExtensionFlag\"],\n \"010C\" : [\"UI\", \"CodingSchemeUID\"],\n \"010D\" : [\"UI\", \"ContextGroupExtensionCreatorUID\"],\n \"010F\" : [\"CS\", \"ContextIdentifier\"],\n \"0110\" : [\"SQ\", \"CodingSchemeIdentificationSequence\"],\n \"0112\" : [\"LO\", \"CodingSchemeRegistry\"],\n \"0114\" : [\"ST\", \"CodingSchemeExternalID\"],\n \"0115\" : [\"ST\", \"CodingSchemeName\"],\n \"0116\" : [\"ST\", \"CodingSchemeResponsibleOrganization\"],\n \"0117\" : [\"UI\", \"ContextUID\"],\n \"0201\" : [\"SH\", \"TimezoneOffsetFromUTC\"],\n \"1000\" : [\"AE\", \"NetworkID\"],\n \"1010\" : [\"SH\", \"StationName\"],\n \"1030\" : [\"LO\", \"StudyDescription\"],\n \"1032\" : [\"SQ\", \"ProcedureCodeSequence\"],\n \"103E\" : [\"LO\", \"SeriesDescription\"],\n \"103F\" : [\"SQ\", \"SeriesDescriptionCodeSequence\"],\n \"1040\" : [\"LO\", \"InstitutionalDepartmentName\"],\n \"1048\" : [\"PN\", \"PhysiciansOfRecord\"],\n \"1049\" : [\"SQ\", \"PhysiciansOfRecordIdentificationSequence\"],\n \"1050\" : [\"PN\", \"PerformingPhysicianName\"],\n \"1052\" : [\"SQ\", \"PerformingPhysicianIdentificationSequence\"],\n \"1060\" : [\"PN\", \"NameOfPhysiciansReadingStudy\"],\n \"1062\" : [\"SQ\", \"PhysiciansReadingStudyIdentificationSequence\"],\n \"1070\" : [\"PN\", \"OperatorsName\"],\n \"1072\" : [\"SQ\", \"OperatorIdentificationSequence\"],\n \"1080\" : [\"LO\", \"AdmittingDiagnosesDescription\"],\n \"1084\" : [\"SQ\", \"AdmittingDiagnosesCodeSequence\"],\n \"1090\" : [\"LO\", \"ManufacturerModelName\"],\n \"1100\" : [\"SQ\", \"ReferencedResultsSequence\"],\n \"1110\" : [\"SQ\", \"ReferencedStudySequence\"],\n \"1111\" : [\"SQ\", \"ReferencedPerformedProcedureStepSequence\"],\n \"1115\" : [\"SQ\", \"ReferencedSeriesSequence\"],\n \"1120\" : [\"SQ\", \"ReferencedPatientSequence\"],\n \"1125\" : [\"SQ\", \"ReferencedVisitSequence\"],\n \"1130\" : [\"SQ\", \"ReferencedOverlaySequence\"],\n \"1134\" : [\"SQ\", \"ReferencedStereometricInstanceSequence\"],\n \"113A\" : [\"SQ\", \"ReferencedWaveformSequence\"],\n \"1140\" : [\"SQ\", \"ReferencedImageSequence\"],\n \"1145\" : [\"SQ\", \"ReferencedCurveSequence\"],\n \"114A\" : [\"SQ\", \"ReferencedInstanceSequence\"],\n \"114B\" : [\"SQ\", \"ReferencedRealWorldValueMappingInstanceSequence\"],\n \"1150\" : [\"UI\", \"ReferencedSOPClassUID\"],\n \"1155\" : [\"UI\", \"ReferencedSOPInstanceUID\"],\n \"115A\" : [\"UI\", \"SOPClassesSupported\"],\n \"1160\" : [\"IS\", \"ReferencedFrameNumber\"],\n \"1161\" : [\"UL\", \"SimpleFrameList\"],\n \"1162\" : [\"UL\", \"CalculatedFrameList\"],\n \"1163\" : [\"FD\", \"TimeRange\"],\n \"1164\" : [\"SQ\", \"FrameExtractionSequence\"],\n \"1167\" : [\"UI\", \"MultiFrameSourceSOPInstanceUID\"],\n \"1195\" : [\"UI\", \"TransactionUID\"],\n \"1197\" : [\"US\", \"FailureReason\"],\n \"1198\" : [\"SQ\", \"FailedSOPSequence\"],\n \"1199\" : [\"SQ\", \"ReferencedSOPSequence\"],\n \"1200\" : [\"SQ\", \"StudiesContainingOtherReferencedInstancesSequence\"],\n \"1250\" : [\"SQ\", \"RelatedSeriesSequence\"],\n \"2110\" : [\"CS\", \"LossyImageCompressionRetired\"],\n \"2111\" : [\"ST\", \"DerivationDescription\"],\n \"2112\" : [\"SQ\", \"SourceImageSequence\"],\n \"2120\" : [\"SH\", \"StageName\"],\n \"2122\" : [\"IS\", \"StageNumber\"],\n \"2124\" : [\"IS\", \"NumberOfStages\"],\n \"2127\" : [\"SH\", \"ViewName\"],\n \"2128\" : [\"IS\", \"ViewNumber\"],\n \"2129\" : [\"IS\", \"NumberOfEventTimers\"],\n \"212A\" : [\"IS\", \"NumberOfViewsInStage\"],\n \"2130\" : [\"DS\", \"EventElapsedTimes\"],\n \"2132\" : [\"LO\", \"EventTimerNames\"],\n \"2133\" : [\"SQ\", \"EventTimerSequence\"],\n \"2134\" : [\"FD\", \"EventTimeOffset\"],\n \"2135\" : [\"SQ\", \"EventCodeSequence\"],\n \"2142\" : [\"IS\", \"StartTrim\"],\n \"2143\" : [\"IS\", \"StopTrim\"],\n \"2144\" : [\"IS\", \"RecommendedDisplayFrameRate\"],\n \"2200\" : [\"CS\", \"TransducerPosition\"],\n \"2204\" : [\"CS\", \"TransducerOrientation\"],\n \"2208\" : [\"CS\", \"AnatomicStructure\"],\n \"2218\" : [\"SQ\", \"AnatomicRegionSequence\"],\n \"2220\" : [\"SQ\", \"AnatomicRegionModifierSequence\"],\n \"2228\" : [\"SQ\", \"PrimaryAnatomicStructureSequence\"],\n \"2229\" : [\"SQ\", \"AnatomicStructureSpaceOrRegionSequence\"],\n \"2230\" : [\"SQ\", \"PrimaryAnatomicStructureModifierSequence\"],\n \"2240\" : [\"SQ\", \"TransducerPositionSequence\"],\n \"2242\" : [\"SQ\", \"TransducerPositionModifierSequence\"],\n \"2244\" : [\"SQ\", \"TransducerOrientationSequence\"],\n \"2246\" : [\"SQ\", \"TransducerOrientationModifierSequence\"],\n \"2251\" : [\"SQ\", \"AnatomicStructureSpaceOrRegionCodeSequenceTrial\"],\n \"2253\" : [\"SQ\", \"AnatomicPortalOfEntranceCodeSequenceTrial\"],\n \"2255\" : [\"SQ\", \"AnatomicApproachDirectionCodeSequenceTrial\"],\n \"2256\" : [\"ST\", \"AnatomicPerspectiveDescriptionTrial\"],\n \"2257\" : [\"SQ\", \"AnatomicPerspectiveCodeSequenceTrial\"],\n \"2258\" : [\"ST\", \"AnatomicLocationOfExaminingInstrumentDescriptionTrial\"],\n \"2259\" : [\"SQ\", \"AnatomicLocationOfExaminingInstrumentCodeSequenceTrial\"],\n \"225A\" : [\"SQ\", \"AnatomicStructureSpaceOrRegionModifierCodeSequenceTrial\"],\n \"225C\" : [\"SQ\", \"OnAxisBackgroundAnatomicStructureCodeSequenceTrial\"],\n \"3001\" : [\"SQ\", \"AlternateRepresentationSequence\"],\n \"3010\" : [\"UI\", \"IrradiationEventUID\"],\n \"4000\" : [\"LT\", \"IdentifyingComments\"],\n \"9007\" : [\"CS\", \"FrameType\"],\n \"9092\" : [\"SQ\", \"ReferencedImageEvidenceSequence\"],\n \"9121\" : [\"SQ\", \"ReferencedRawDataSequence\"],\n \"9123\" : [\"UI\", \"CreatorVersionUID\"],\n \"9124\" : [\"SQ\", \"DerivationImageSequence\"],\n \"9154\" : [\"SQ\", \"SourceImageEvidenceSequence\"],\n \"9205\" : [\"CS\", \"PixelPresentation\"],\n \"9206\" : [\"CS\", \"VolumetricProperties\"],\n \"9207\" : [\"CS\", \"VolumeBasedCalculationTechnique\"],\n \"9208\" : [\"CS\", \"ComplexImageComponent\"],\n \"9209\" : [\"CS\", \"AcquisitionContrast\"],\n \"9215\" : [\"SQ\", \"DerivationCodeSequence\"],\n \"9237\" : [\"SQ\", \"ReferencedPresentationStateSequence\"],\n \"9410\" : [\"SQ\", \"ReferencedOtherPlaneSequence\"],\n \"9458\" : [\"SQ\", \"FrameDisplaySequence\"],\n \"9459\" : [\"FL\", \"RecommendedDisplayFrameRateInFloat\"],\n \"9460\" : [\"CS\", \"SkipFrameRangeFlag\"]\n },\n \"0010\" : {\n \"0010\" : [\"PN\", \"PatientName\"],\n \"0020\" : [\"LO\", \"PatientID\"],\n \"0021\" : [\"LO\", \"IssuerOfPatientID\"],\n \"0022\" : [\"CS\", \"TypeOfPatientID\"],\n \"0024\" : [\"SQ\", \"IssuerOfPatientIDQualifiersSequence\"],\n \"0030\" : [\"DA\", \"PatientBirthDate\"],\n \"0032\" : [\"TM\", \"PatientBirthTime\"],\n \"0040\" : [\"CS\", \"PatientSex\"],\n \"0050\" : [\"SQ\", \"PatientInsurancePlanCodeSequence\"],\n \"0101\" : [\"SQ\", \"PatientPrimaryLanguageCodeSequence\"],\n \"0102\" : [\"SQ\", \"PatientPrimaryLanguageModifierCodeSequence\"],\n \"1000\" : [\"LO\", \"OtherPatientIDs\"],\n \"1001\" : [\"PN\", \"OtherPatientNames\"],\n \"1002\" : [\"SQ\", \"OtherPatientIDsSequence\"],\n \"1005\" : [\"PN\", \"PatientBirthName\"],\n \"1010\" : [\"AS\", \"PatientAge\"],\n \"1020\" : [\"DS\", \"PatientSize\"],\n \"1021\" : [\"SQ\", \"PatientSizeCodeSequence\"],\n \"1030\" : [\"DS\", \"PatientWeight\"],\n \"1040\" : [\"LO\", \"PatientAddress\"],\n \"1050\" : [\"LO\", \"InsurancePlanIdentification\"],\n \"1060\" : [\"PN\", \"PatientMotherBirthName\"],\n \"1080\" : [\"LO\", \"MilitaryRank\"],\n \"1081\" : [\"LO\", \"BranchOfService\"],\n \"1090\" : [\"LO\", \"MedicalRecordLocator\"],\n \"2000\" : [\"LO\", \"MedicalAlerts\"],\n \"2110\" : [\"LO\", \"Allergies\"],\n \"2150\" : [\"LO\", \"CountryOfResidence\"],\n \"2152\" : [\"LO\", \"RegionOfResidence\"],\n \"2154\" : [\"SH\", \"PatientTelephoneNumbers\"],\n \"2160\" : [\"SH\", \"EthnicGroup\"],\n \"2180\" : [\"SH\", \"Occupation\"],\n \"21A0\" : [\"CS\", \"SmokingStatus\"],\n \"21B0\" : [\"LT\", \"AdditionalPatientHistory\"],\n \"21C0\" : [\"US\", \"PregnancyStatus\"],\n \"21D0\" : [\"DA\", \"LastMenstrualDate\"],\n \"21F0\" : [\"LO\", \"PatientReligiousPreference\"],\n \"2201\" : [\"LO\", \"PatientSpeciesDescription\"],\n \"2202\" : [\"SQ\", \"PatientSpeciesCodeSequence\"],\n \"2203\" : [\"CS\", \"PatientSexNeutered\"],\n \"2210\" : [\"CS\", \"AnatomicalOrientationType\"],\n \"2292\" : [\"LO\", \"PatientBreedDescription\"],\n \"2293\" : [\"SQ\", \"PatientBreedCodeSequence\"],\n \"2294\" : [\"SQ\", \"BreedRegistrationSequence\"],\n \"2295\" : [\"LO\", \"BreedRegistrationNumber\"],\n \"2296\" : [\"SQ\", \"BreedRegistryCodeSequence\"],\n \"2297\" : [\"PN\", \"ResponsiblePerson\"],\n \"2298\" : [\"CS\", \"ResponsiblePersonRole\"],\n \"2299\" : [\"LO\", \"ResponsibleOrganization\"],\n \"4000\" : [\"LT\", \"PatientComments\"],\n \"9431\" : [\"FL\", \"ExaminedBodyThickness\"]\n },\n \"0012\" : {\n \"0010\" : [\"LO\", \"ClinicalTrialSponsorName\"],\n \"0020\" : [\"LO\", \"ClinicalTrialProtocolID\"],\n \"0021\" : [\"LO\", \"ClinicalTrialProtocolName\"],\n \"0030\" : [\"LO\", \"ClinicalTrialSiteID\"],\n \"0031\" : [\"LO\", \"ClinicalTrialSiteName\"],\n \"0040\" : [\"LO\", \"ClinicalTrialSubjectID\"],\n \"0042\" : [\"LO\", \"ClinicalTrialSubjectReadingID\"],\n \"0050\" : [\"LO\", \"ClinicalTrialTimePointID\"],\n \"0051\" : [\"ST\", \"ClinicalTrialTimePointDescription\"],\n \"0060\" : [\"LO\", \"ClinicalTrialCoordinatingCenterName\"],\n \"0062\" : [\"CS\", \"PatientIdentityRemoved\"],\n \"0063\" : [\"LO\", \"DeidentificationMethod\"],\n \"0064\" : [\"SQ\", \"DeidentificationMethodCodeSequence\"],\n \"0071\" : [\"LO\", \"ClinicalTrialSeriesID\"],\n \"0072\" : [\"LO\", \"ClinicalTrialSeriesDescription\"],\n \"0081\" : [\"LO\", \"ClinicalTrialProtocolEthicsCommitteeName\"],\n \"0082\" : [\"LO\", \"ClinicalTrialProtocolEthicsCommitteeApprovalNumber\"],\n \"0083\" : [\"SQ\", \"ConsentForClinicalTrialUseSequence\"],\n \"0084\" : [\"CS\", \"DistributionType\"],\n \"0085\" : [\"CS\", \"ConsentForDistributionFlag\"]\n },\n \"0014\" : {\n \"0023\" : [\"ST\", \"CADFileFormat\"],\n \"0024\" : [\"ST\", \"ComponentReferenceSystem\"],\n \"0025\" : [\"ST\", \"ComponentManufacturingProcedure\"],\n \"0028\" : [\"ST\", \"ComponentManufacturer\"],\n \"0030\" : [\"DS\", \"MaterialThickness\"],\n \"0032\" : [\"DS\", \"MaterialPipeDiameter\"],\n \"0034\" : [\"DS\", \"MaterialIsolationDiameter\"],\n \"0042\" : [\"ST\", \"MaterialGrade\"],\n \"0044\" : [\"ST\", \"MaterialPropertiesFileID\"],\n \"0045\" : [\"ST\", \"MaterialPropertiesFileFormat\"],\n \"0046\" : [\"LT\", \"MaterialNotes\"],\n \"0050\" : [\"CS\", \"ComponentShape\"],\n \"0052\" : [\"CS\", \"CurvatureType\"],\n \"0054\" : [\"DS\", \"OuterDiameter\"],\n \"0056\" : [\"DS\", \"InnerDiameter\"],\n \"1010\" : [\"ST\", \"ActualEnvironmentalConditions\"],\n \"1020\" : [\"DA\", \"ExpiryDate\"],\n \"1040\" : [\"ST\", \"EnvironmentalConditions\"],\n \"2002\" : [\"SQ\", \"EvaluatorSequence\"],\n \"2004\" : [\"IS\", \"EvaluatorNumber\"],\n \"2006\" : [\"PN\", \"EvaluatorName\"],\n \"2008\" : [\"IS\", \"EvaluationAttempt\"],\n \"2012\" : [\"SQ\", \"IndicationSequence\"],\n \"2014\" : [\"IS\", \"IndicationNumber \"],\n \"2016\" : [\"SH\", \"IndicationLabel\"],\n \"2018\" : [\"ST\", \"IndicationDescription\"],\n \"201A\" : [\"CS\", \"IndicationType\"],\n \"201C\" : [\"CS\", \"IndicationDisposition\"],\n \"201E\" : [\"SQ\", \"IndicationROISequence\"],\n \"2030\" : [\"SQ\", \"IndicationPhysicalPropertySequence\"],\n \"2032\" : [\"SH\", \"PropertyLabel\"],\n \"2202\" : [\"IS\", \"CoordinateSystemNumberOfAxes \"],\n \"2204\" : [\"SQ\", \"CoordinateSystemAxesSequence\"],\n \"2206\" : [\"ST\", \"CoordinateSystemAxisDescription\"],\n \"2208\" : [\"CS\", \"CoordinateSystemDataSetMapping\"],\n \"220A\" : [\"IS\", \"CoordinateSystemAxisNumber\"],\n \"220C\" : [\"CS\", \"CoordinateSystemAxisType\"],\n \"220E\" : [\"CS\", \"CoordinateSystemAxisUnits\"],\n \"2210\" : [\"OB\", \"CoordinateSystemAxisValues\"],\n \"2220\" : [\"SQ\", \"CoordinateSystemTransformSequence\"],\n \"2222\" : [\"ST\", \"TransformDescription\"],\n \"2224\" : [\"IS\", \"TransformNumberOfAxes\"],\n \"2226\" : [\"IS\", \"TransformOrderOfAxes\"],\n \"2228\" : [\"CS\", \"TransformedAxisUnits\"],\n \"222A\" : [\"DS\", \"CoordinateSystemTransformRotationAndScaleMatrix\"],\n \"222C\" : [\"DS\", \"CoordinateSystemTransformTranslationMatrix\"],\n \"3011\" : [\"DS\", \"InternalDetectorFrameTime\"],\n \"3012\" : [\"DS\", \"NumberOfFramesIntegrated\"],\n \"3020\" : [\"SQ\", \"DetectorTemperatureSequence\"],\n \"3022\" : [\"DS\", \"SensorName\"],\n \"3024\" : [\"DS\", \"HorizontalOffsetOfSensor\"],\n \"3026\" : [\"DS\", \"VerticalOffsetOfSensor\"],\n \"3028\" : [\"DS\", \"SensorTemperature\"],\n \"3040\" : [\"SQ\", \"DarkCurrentSequence\"],\n \"3050\" : [\"OB\", \"DarkCurrentCounts\"],\n \"3060\" : [\"SQ\", \"GainCorrectionReferenceSequence\"],\n \"3070\" : [\"OB\", \"AirCounts\"],\n \"3071\" : [\"DS\", \"KVUsedInGainCalibration\"],\n \"3072\" : [\"DS\", \"MAUsedInGainCalibration\"],\n \"3073\" : [\"DS\", \"NumberOfFramesUsedForIntegration\"],\n \"3074\" : [\"LO\", \"FilterMaterialUsedInGainCalibration\"],\n \"3075\" : [\"DS\", \"FilterThicknessUsedInGainCalibration\"],\n \"3076\" : [\"DA\", \"DateOfGainCalibration\"],\n \"3077\" : [\"TM\", \"TimeOfGainCalibration\"],\n \"3080\" : [\"OB\", \"BadPixelImage\"],\n \"3099\" : [\"LT\", \"CalibrationNotes\"],\n \"4002\" : [\"SQ\", \"PulserEquipmentSequence\"],\n \"4004\" : [\"CS\", \"PulserType\"],\n \"4006\" : [\"LT\", \"PulserNotes\"],\n \"4008\" : [\"SQ\", \"ReceiverEquipmentSequence\"],\n \"400A\" : [\"CS\", \"AmplifierType\"],\n \"400C\" : [\"LT\", \"ReceiverNotes\"],\n \"400E\" : [\"SQ\", \"PreAmplifierEquipmentSequence\"],\n \"400F\" : [\"LT\", \"PreAmplifierNotes\"],\n \"4010\" : [\"SQ\", \"TransmitTransducerSequence\"],\n \"4011\" : [\"SQ\", \"ReceiveTransducerSequence\"],\n \"4012\" : [\"US\", \"NumberOfElements\"],\n \"4013\" : [\"CS\", \"ElementShape\"],\n \"4014\" : [\"DS\", \"ElementDimensionA\"],\n \"4015\" : [\"DS\", \"ElementDimensionB\"],\n \"4016\" : [\"DS\", \"ElementPitch\"],\n \"4017\" : [\"DS\", \"MeasuredBeamDimensionA\"],\n \"4018\" : [\"DS\", \"MeasuredBeamDimensionB\"],\n \"4019\" : [\"DS\", \"LocationOfMeasuredBeamDiameter\"],\n \"401A\" : [\"DS\", \"NominalFrequency\"],\n \"401B\" : [\"DS\", \"MeasuredCenterFrequency\"],\n \"401C\" : [\"DS\", \"MeasuredBandwidth\"],\n \"4020\" : [\"SQ\", \"PulserSettingsSequence\"],\n \"4022\" : [\"DS\", \"PulseWidth\"],\n \"4024\" : [\"DS\", \"ExcitationFrequency\"],\n \"4026\" : [\"CS\", \"ModulationType\"],\n \"4028\" : [\"DS\", \"Damping\"],\n \"4030\" : [\"SQ\", \"ReceiverSettingsSequence\"],\n \"4031\" : [\"DS\", \"AcquiredSoundpathLength\"],\n \"4032\" : [\"CS\", \"AcquisitionCompressionType\"],\n \"4033\" : [\"IS\", \"AcquisitionSampleSize\"],\n \"4034\" : [\"DS\", \"RectifierSmoothing\"],\n \"4035\" : [\"SQ\", \"DACSequence\"],\n \"4036\" : [\"CS\", \"DACType\"],\n \"4038\" : [\"DS\", \"DACGainPoints\"],\n \"403A\" : [\"DS\", \"DACTimePoints\"],\n \"403C\" : [\"DS\", \"DACAmplitude\"],\n \"4040\" : [\"SQ\", \"PreAmplifierSettingsSequence\"],\n \"4050\" : [\"SQ\", \"TransmitTransducerSettingsSequence\"],\n \"4051\" : [\"SQ\", \"ReceiveTransducerSettingsSequence\"],\n \"4052\" : [\"DS\", \"IncidentAngle\"],\n \"4054\" : [\"ST\", \"CouplingTechnique\"],\n \"4056\" : [\"ST\", \"CouplingMedium\"],\n \"4057\" : [\"DS\", \"CouplingVelocity\"],\n \"4058\" : [\"DS\", \"CrystalCenterLocationX\"],\n \"4059\" : [\"DS\", \"CrystalCenterLocationZ\"],\n \"405A\" : [\"DS\", \"SoundPathLength\"],\n \"405C\" : [\"ST\", \"DelayLawIdentifier\"],\n \"4060\" : [\"SQ\", \"GateSettingsSequence\"],\n \"4062\" : [\"DS\", \"GateThreshold\"],\n \"4064\" : [\"DS\", \"VelocityOfSound\"],\n \"4070\" : [\"SQ\", \"CalibrationSettingsSequence\"],\n \"4072\" : [\"ST\", \"CalibrationProcedure\"],\n \"4074\" : [\"SH\", \"ProcedureVersion\"],\n \"4076\" : [\"DA\", \"ProcedureCreationDate\"],\n \"4078\" : [\"DA\", \"ProcedureExpirationDate\"],\n \"407A\" : [\"DA\", \"ProcedureLastModifiedDate\"],\n \"407C\" : [\"TM\", \"CalibrationTime\"],\n \"407E\" : [\"DA\", \"CalibrationDate\"],\n \"5002\" : [\"IS\", \"LINACEnergy\"],\n \"5004\" : [\"IS\", \"LINACOutput\"]\n },\n \"0018\" : {\n \"0010\" : [\"LO\", \"ContrastBolusAgent\"],\n \"0012\" : [\"SQ\", \"ContrastBolusAgentSequence\"],\n \"0014\" : [\"SQ\", \"ContrastBolusAdministrationRouteSequence\"],\n \"0015\" : [\"CS\", \"BodyPartExamined\"],\n \"0020\" : [\"CS\", \"ScanningSequence\"],\n \"0021\" : [\"CS\", \"SequenceVariant\"],\n \"0022\" : [\"CS\", \"ScanOptions\"],\n \"0023\" : [\"CS\", \"MRAcquisitionType\"],\n \"0024\" : [\"SH\", \"SequenceName\"],\n \"0025\" : [\"CS\", \"AngioFlag\"],\n \"0026\" : [\"SQ\", \"InterventionDrugInformationSequence\"],\n \"0027\" : [\"TM\", \"InterventionDrugStopTime\"],\n \"0028\" : [\"DS\", \"InterventionDrugDose\"],\n \"0029\" : [\"SQ\", \"InterventionDrugCodeSequence\"],\n \"002A\" : [\"SQ\", \"AdditionalDrugSequence\"],\n \"0030\" : [\"LO\", \"Radionuclide\"],\n \"0031\" : [\"LO\", \"Radiopharmaceutical\"],\n \"0032\" : [\"DS\", \"EnergyWindowCenterline\"],\n \"0033\" : [\"DS\", \"EnergyWindowTotalWidth\"],\n \"0034\" : [\"LO\", \"InterventionDrugName\"],\n \"0035\" : [\"TM\", \"InterventionDrugStartTime\"],\n \"0036\" : [\"SQ\", \"InterventionSequence\"],\n \"0037\" : [\"CS\", \"TherapyType\"],\n \"0038\" : [\"CS\", \"InterventionStatus\"],\n \"0039\" : [\"CS\", \"TherapyDescription\"],\n \"003A\" : [\"ST\", \"InterventionDescription\"],\n \"0040\" : [\"IS\", \"CineRate\"],\n \"0042\" : [\"CS\", \"InitialCineRunState\"],\n \"0050\" : [\"DS\", \"SliceThickness\"],\n \"0060\" : [\"DS\", \"KVP\"],\n \"0070\" : [\"IS\", \"CountsAccumulated\"],\n \"0071\" : [\"CS\", \"AcquisitionTerminationCondition\"],\n \"0072\" : [\"DS\", \"EffectiveDuration\"],\n \"0073\" : [\"CS\", \"AcquisitionStartCondition\"],\n \"0074\" : [\"IS\", \"AcquisitionStartConditionData\"],\n \"0075\" : [\"IS\", \"AcquisitionTerminationConditionData\"],\n \"0080\" : [\"DS\", \"RepetitionTime\"],\n \"0081\" : [\"DS\", \"EchoTime\"],\n \"0082\" : [\"DS\", \"InversionTime\"],\n \"0083\" : [\"DS\", \"NumberOfAverages\"],\n \"0084\" : [\"DS\", \"ImagingFrequency\"],\n \"0085\" : [\"SH\", \"ImagedNucleus\"],\n \"0086\" : [\"IS\", \"EchoNumbers\"],\n \"0087\" : [\"DS\", \"MagneticFieldStrength\"],\n \"0088\" : [\"DS\", \"SpacingBetweenSlices\"],\n \"0089\" : [\"IS\", \"NumberOfPhaseEncodingSteps\"],\n \"0090\" : [\"DS\", \"DataCollectionDiameter\"],\n \"0091\" : [\"IS\", \"EchoTrainLength\"],\n \"0093\" : [\"DS\", \"PercentSampling\"],\n \"0094\" : [\"DS\", \"PercentPhaseFieldOfView\"],\n \"0095\" : [\"DS\", \"PixelBandwidth\"],\n \"1000\" : [\"LO\", \"DeviceSerialNumber\"],\n \"1002\" : [\"UI\", \"DeviceUID\"],\n \"1003\" : [\"LO\", \"DeviceID\"],\n \"1004\" : [\"LO\", \"PlateID\"],\n \"1005\" : [\"LO\", \"GeneratorID\"],\n \"1006\" : [\"LO\", \"GridID\"],\n \"1007\" : [\"LO\", \"CassetteID\"],\n \"1008\" : [\"LO\", \"GantryID\"],\n \"1010\" : [\"LO\", \"SecondaryCaptureDeviceID\"],\n \"1011\" : [\"LO\", \"HardcopyCreationDeviceID\"],\n \"1012\" : [\"DA\", \"DateOfSecondaryCapture\"],\n \"1014\" : [\"TM\", \"TimeOfSecondaryCapture\"],\n \"1016\" : [\"LO\", \"SecondaryCaptureDeviceManufacturer\"],\n \"1017\" : [\"LO\", \"HardcopyDeviceManufacturer\"],\n \"1018\" : [\"LO\", \"SecondaryCaptureDeviceManufacturerModelName\"],\n \"1019\" : [\"LO\", \"SecondaryCaptureDeviceSoftwareVersions\"],\n \"101A\" : [\"LO\", \"HardcopyDeviceSoftwareVersion\"],\n \"101B\" : [\"LO\", \"HardcopyDeviceManufacturerModelName\"],\n \"1020\" : [\"LO\", \"SoftwareVersions\"],\n \"1022\" : [\"SH\", \"VideoImageFormatAcquired\"],\n \"1023\" : [\"LO\", \"DigitalImageFormatAcquired\"],\n \"1030\" : [\"LO\", \"ProtocolName\"],\n \"1040\" : [\"LO\", \"ContrastBolusRoute\"],\n \"1041\" : [\"DS\", \"ContrastBolusVolume\"],\n \"1042\" : [\"TM\", \"ContrastBolusStartTime\"],\n \"1043\" : [\"TM\", \"ContrastBolusStopTime\"],\n \"1044\" : [\"DS\", \"ContrastBolusTotalDose\"],\n \"1045\" : [\"IS\", \"SyringeCounts\"],\n \"1046\" : [\"DS\", \"ContrastFlowRate\"],\n \"1047\" : [\"DS\", \"ContrastFlowDuration\"],\n \"1048\" : [\"CS\", \"ContrastBolusIngredient\"],\n \"1049\" : [\"DS\", \"ContrastBolusIngredientConcentration\"],\n \"1050\" : [\"DS\", \"SpatialResolution\"],\n \"1060\" : [\"DS\", \"TriggerTime\"],\n \"1061\" : [\"LO\", \"TriggerSourceOrType\"],\n \"1062\" : [\"IS\", \"NominalInterval\"],\n \"1063\" : [\"DS\", \"FrameTime\"],\n \"1064\" : [\"LO\", \"CardiacFramingType\"],\n \"1065\" : [\"DS\", \"FrameTimeVector\"],\n \"1066\" : [\"DS\", \"FrameDelay\"],\n \"1067\" : [\"DS\", \"ImageTriggerDelay\"],\n \"1068\" : [\"DS\", \"MultiplexGroupTimeOffset\"],\n \"1069\" : [\"DS\", \"TriggerTimeOffset\"],\n \"106A\" : [\"CS\", \"SynchronizationTrigger\"],\n \"106C\" : [\"US\", \"SynchronizationChannel\"],\n \"106E\" : [\"UL\", \"TriggerSamplePosition\"],\n \"1070\" : [\"LO\", \"RadiopharmaceuticalRoute\"],\n \"1071\" : [\"DS\", \"RadiopharmaceuticalVolume\"],\n \"1072\" : [\"TM\", \"RadiopharmaceuticalStartTime\"],\n \"1073\" : [\"TM\", \"RadiopharmaceuticalStopTime\"],\n \"1074\" : [\"DS\", \"RadionuclideTotalDose\"],\n \"1075\" : [\"DS\", \"RadionuclideHalfLife\"],\n \"1076\" : [\"DS\", \"RadionuclidePositronFraction\"],\n \"1077\" : [\"DS\", \"RadiopharmaceuticalSpecificActivity\"],\n \"1078\" : [\"DT\", \"RadiopharmaceuticalStartDateTime\"],\n \"1079\" : [\"DT\", \"RadiopharmaceuticalStopDateTime\"],\n \"1080\" : [\"CS\", \"BeatRejectionFlag\"],\n \"1081\" : [\"IS\", \"LowRRValue\"],\n \"1082\" : [\"IS\", \"HighRRValue\"],\n \"1083\" : [\"IS\", \"IntervalsAcquired\"],\n \"1084\" : [\"IS\", \"IntervalsRejected\"],\n \"1085\" : [\"LO\", \"PVCRejection\"],\n \"1086\" : [\"IS\", \"SkipBeats\"],\n \"1088\" : [\"IS\", \"HeartRate\"],\n \"1090\" : [\"IS\", \"CardiacNumberOfImages\"],\n \"1094\" : [\"IS\", \"TriggerWindow\"],\n \"1100\" : [\"DS\", \"ReconstructionDiameter\"],\n \"1110\" : [\"DS\", \"DistanceSourceToDetector\"],\n \"1111\" : [\"DS\", \"DistanceSourceToPatient\"],\n \"1114\" : [\"DS\", \"EstimatedRadiographicMagnificationFactor\"],\n \"1120\" : [\"DS\", \"GantryDetectorTilt\"],\n \"1121\" : [\"DS\", \"GantryDetectorSlew\"],\n \"1130\" : [\"DS\", \"TableHeight\"],\n \"1131\" : [\"DS\", \"TableTraverse\"],\n \"1134\" : [\"CS\", \"TableMotion\"],\n \"1135\" : [\"DS\", \"TableVerticalIncrement\"],\n \"1136\" : [\"DS\", \"TableLateralIncrement\"],\n \"1137\" : [\"DS\", \"TableLongitudinalIncrement\"],\n \"1138\" : [\"DS\", \"TableAngle\"],\n \"113A\" : [\"CS\", \"TableType\"],\n \"1140\" : [\"CS\", \"RotationDirection\"],\n \"1141\" : [\"DS\", \"AngularPosition\"],\n \"1142\" : [\"DS\", \"RadialPosition\"],\n \"1143\" : [\"DS\", \"ScanArc\"],\n \"1144\" : [\"DS\", \"AngularStep\"],\n \"1145\" : [\"DS\", \"CenterOfRotationOffset\"],\n \"1146\" : [\"DS\", \"RotationOffset\"],\n \"1147\" : [\"CS\", \"FieldOfViewShape\"],\n \"1149\" : [\"IS\", \"FieldOfViewDimensions\"],\n \"1150\" : [\"IS\", \"ExposureTime\"],\n \"1151\" : [\"IS\", \"XRayTubeCurrent\"],\n \"1152\" : [\"IS\", \"Exposure\"],\n \"1153\" : [\"IS\", \"ExposureInuAs\"],\n \"1154\" : [\"DS\", \"AveragePulseWidth\"],\n \"1155\" : [\"CS\", \"RadiationSetting\"],\n \"1156\" : [\"CS\", \"RectificationType\"],\n \"115A\" : [\"CS\", \"RadiationMode\"],\n \"115E\" : [\"DS\", \"ImageAndFluoroscopyAreaDoseProduct\"],\n \"1160\" : [\"SH\", \"FilterType\"],\n \"1161\" : [\"LO\", \"TypeOfFilters\"],\n \"1162\" : [\"DS\", \"IntensifierSize\"],\n \"1164\" : [\"DS\", \"ImagerPixelSpacing\"],\n \"1166\" : [\"CS\", \"Grid\"],\n \"1170\" : [\"IS\", \"GeneratorPower\"],\n \"1180\" : [\"SH\", \"CollimatorGridName\"],\n \"1181\" : [\"CS\", \"CollimatorType\"],\n \"1182\" : [\"IS\", \"FocalDistance\"],\n \"1183\" : [\"DS\", \"XFocusCenter\"],\n \"1184\" : [\"DS\", \"YFocusCenter\"],\n \"1190\" : [\"DS\", \"FocalSpots\"],\n \"1191\" : [\"CS\", \"AnodeTargetMaterial\"],\n \"11A0\" : [\"DS\", \"BodyPartThickness\"],\n \"11A2\" : [\"DS\", \"CompressionForce\"],\n \"1200\" : [\"DA\", \"DateOfLastCalibration\"],\n \"1201\" : [\"TM\", \"TimeOfLastCalibration\"],\n \"1210\" : [\"SH\", \"ConvolutionKernel\"],\n \"1240\" : [\"IS\", \"UpperLowerPixelValues\"],\n \"1242\" : [\"IS\", \"ActualFrameDuration\"],\n \"1243\" : [\"IS\", \"CountRate\"],\n \"1244\" : [\"US\", \"PreferredPlaybackSequencing\"],\n \"1250\" : [\"SH\", \"ReceiveCoilName\"],\n \"1251\" : [\"SH\", \"TransmitCoilName\"],\n \"1260\" : [\"SH\", \"PlateType\"],\n \"1261\" : [\"LO\", \"PhosphorType\"],\n \"1300\" : [\"DS\", \"ScanVelocity\"],\n \"1301\" : [\"CS\", \"WholeBodyTechnique\"],\n \"1302\" : [\"IS\", \"ScanLength\"],\n \"1310\" : [\"US\", \"AcquisitionMatrix\"],\n \"1312\" : [\"CS\", \"InPlanePhaseEncodingDirection\"],\n \"1314\" : [\"DS\", \"FlipAngle\"],\n \"1315\" : [\"CS\", \"VariableFlipAngleFlag\"],\n \"1316\" : [\"DS\", \"SAR\"],\n \"1318\" : [\"DS\", \"dBdt\"],\n \"1400\" : [\"LO\", \"AcquisitionDeviceProcessingDescription\"],\n \"1401\" : [\"LO\", \"AcquisitionDeviceProcessingCode\"],\n \"1402\" : [\"CS\", \"CassetteOrientation\"],\n \"1403\" : [\"CS\", \"CassetteSize\"],\n \"1404\" : [\"US\", \"ExposuresOnPlate\"],\n \"1405\" : [\"IS\", \"RelativeXRayExposure\"],\n \"1411\" : [\"DS\", \"ExposureIndex\"],\n \"1412\" : [\"DS\", \"TargetExposureIndex\"],\n \"1413\" : [\"DS\", \"DeviationIndex\"],\n \"1450\" : [\"DS\", \"ColumnAngulation\"],\n \"1460\" : [\"DS\", \"TomoLayerHeight\"],\n \"1470\" : [\"DS\", \"TomoAngle\"],\n \"1480\" : [\"DS\", \"TomoTime\"],\n \"1490\" : [\"CS\", \"TomoType\"],\n \"1491\" : [\"CS\", \"TomoClass\"],\n \"1495\" : [\"IS\", \"NumberOfTomosynthesisSourceImages\"],\n \"1500\" : [\"CS\", \"PositionerMotion\"],\n \"1508\" : [\"CS\", \"PositionerType\"],\n \"1510\" : [\"DS\", \"PositionerPrimaryAngle\"],\n \"1511\" : [\"DS\", \"PositionerSecondaryAngle\"],\n \"1520\" : [\"DS\", \"PositionerPrimaryAngleIncrement\"],\n \"1521\" : [\"DS\", \"PositionerSecondaryAngleIncrement\"],\n \"1530\" : [\"DS\", \"DetectorPrimaryAngle\"],\n \"1531\" : [\"DS\", \"DetectorSecondaryAngle\"],\n \"1600\" : [\"CS\", \"ShutterShape\"],\n \"1602\" : [\"IS\", \"ShutterLeftVerticalEdge\"],\n \"1604\" : [\"IS\", \"ShutterRightVerticalEdge\"],\n \"1606\" : [\"IS\", \"ShutterUpperHorizontalEdge\"],\n \"1608\" : [\"IS\", \"ShutterLowerHorizontalEdge\"],\n \"1610\" : [\"IS\", \"CenterOfCircularShutter\"],\n \"1612\" : [\"IS\", \"RadiusOfCircularShutter\"],\n \"1620\" : [\"IS\", \"VerticesOfThePolygonalShutter\"],\n \"1622\" : [\"US\", \"ShutterPresentationValue\"],\n \"1623\" : [\"US\", \"ShutterOverlayGroup\"],\n \"1624\" : [\"US\", \"ShutterPresentationColorCIELabValue\"],\n \"1700\" : [\"CS\", \"CollimatorShape\"],\n \"1702\" : [\"IS\", \"CollimatorLeftVerticalEdge\"],\n \"1704\" : [\"IS\", \"CollimatorRightVerticalEdge\"],\n \"1706\" : [\"IS\", \"CollimatorUpperHorizontalEdge\"],\n \"1708\" : [\"IS\", \"CollimatorLowerHorizontalEdge\"],\n \"1710\" : [\"IS\", \"CenterOfCircularCollimator\"],\n \"1712\" : [\"IS\", \"RadiusOfCircularCollimator\"],\n \"1720\" : [\"IS\", \"VerticesOfThePolygonalCollimator\"],\n \"1800\" : [\"CS\", \"AcquisitionTimeSynchronized\"],\n \"1801\" : [\"SH\", \"TimeSource\"],\n \"1802\" : [\"CS\", \"TimeDistributionProtocol\"],\n \"1803\" : [\"LO\", \"NTPSourceAddress\"],\n \"2001\" : [\"IS\", \"PageNumberVector\"],\n \"2002\" : [\"SH\", \"FrameLabelVector\"],\n \"2003\" : [\"DS\", \"FramePrimaryAngleVector\"],\n \"2004\" : [\"DS\", \"FrameSecondaryAngleVector\"],\n \"2005\" : [\"DS\", \"SliceLocationVector\"],\n \"2006\" : [\"SH\", \"DisplayWindowLabelVector\"],\n \"2010\" : [\"DS\", \"NominalScannedPixelSpacing\"],\n \"2020\" : [\"CS\", \"DigitizingDeviceTransportDirection\"],\n \"2030\" : [\"DS\", \"RotationOfScannedFilm\"],\n \"3100\" : [\"CS\", \"IVUSAcquisition\"],\n \"3101\" : [\"DS\", \"IVUSPullbackRate\"],\n \"3102\" : [\"DS\", \"IVUSGatedRate\"],\n \"3103\" : [\"IS\", \"IVUSPullbackStartFrameNumber\"],\n \"3104\" : [\"IS\", \"IVUSPullbackStopFrameNumber\"],\n \"3105\" : [\"IS\", \"LesionNumber\"],\n \"4000\" : [\"LT\", \"AcquisitionComments\"],\n \"5000\" : [\"SH\", \"OutputPower\"],\n \"5010\" : [\"LO\", \"TransducerData\"],\n \"5012\" : [\"DS\", \"FocusDepth\"],\n \"5020\" : [\"LO\", \"ProcessingFunction\"],\n \"5021\" : [\"LO\", \"PostprocessingFunction\"],\n \"5022\" : [\"DS\", \"MechanicalIndex\"],\n \"5024\" : [\"DS\", \"BoneThermalIndex\"],\n \"5026\" : [\"DS\", \"CranialThermalIndex\"],\n \"5027\" : [\"DS\", \"SoftTissueThermalIndex\"],\n \"5028\" : [\"DS\", \"SoftTissueFocusThermalIndex\"],\n \"5029\" : [\"DS\", \"SoftTissueSurfaceThermalIndex\"],\n \"5030\" : [\"DS\", \"DynamicRange\"],\n \"5040\" : [\"DS\", \"TotalGain\"],\n \"5050\" : [\"IS\", \"DepthOfScanField\"],\n \"5100\" : [\"CS\", \"PatientPosition\"],\n \"5101\" : [\"CS\", \"ViewPosition\"],\n \"5104\" : [\"SQ\", \"ProjectionEponymousNameCodeSequence\"],\n \"5210\" : [\"DS\", \"ImageTransformationMatrix\"],\n \"5212\" : [\"DS\", \"ImageTranslationVector\"],\n \"6000\" : [\"DS\", \"Sensitivity\"],\n \"6011\" : [\"SQ\", \"SequenceOfUltrasoundRegions\"],\n \"6012\" : [\"US\", \"RegionSpatialFormat\"],\n \"6014\" : [\"US\", \"RegionDataType\"],\n \"6016\" : [\"UL\", \"RegionFlags\"],\n \"6018\" : [\"UL\", \"RegionLocationMinX0\"],\n \"601A\" : [\"UL\", \"RegionLocationMinY0\"],\n \"601C\" : [\"UL\", \"RegionLocationMaxX1\"],\n \"601E\" : [\"UL\", \"RegionLocationMaxY1\"],\n \"6020\" : [\"SL\", \"ReferencePixelX0\"],\n \"6022\" : [\"SL\", \"ReferencePixelY0\"],\n \"6024\" : [\"US\", \"PhysicalUnitsXDirection\"],\n \"6026\" : [\"US\", \"PhysicalUnitsYDirection\"],\n \"6028\" : [\"FD\", \"ReferencePixelPhysicalValueX\"],\n \"602A\" : [\"FD\", \"ReferencePixelPhysicalValueY\"],\n \"602C\" : [\"FD\", \"PhysicalDeltaX\"],\n \"602E\" : [\"FD\", \"PhysicalDeltaY\"],\n \"6030\" : [\"UL\", \"TransducerFrequency\"],\n \"6031\" : [\"CS\", \"TransducerType\"],\n \"6032\" : [\"UL\", \"PulseRepetitionFrequency\"],\n \"6034\" : [\"FD\", \"DopplerCorrectionAngle\"],\n \"6036\" : [\"FD\", \"SteeringAngle\"],\n \"6038\" : [\"UL\", \"DopplerSampleVolumeXPositionRetired\"],\n \"6039\" : [\"SL\", \"DopplerSampleVolumeXPosition\"],\n \"603A\" : [\"UL\", \"DopplerSampleVolumeYPositionRetired\"],\n \"603B\" : [\"SL\", \"DopplerSampleVolumeYPosition\"],\n \"603C\" : [\"UL\", \"TMLinePositionX0Retired\"],\n \"603D\" : [\"SL\", \"TMLinePositionX0\"],\n \"603E\" : [\"UL\", \"TMLinePositionY0Retired\"],\n \"603F\" : [\"SL\", \"TMLinePositionY0\"],\n \"6040\" : [\"UL\", \"TMLinePositionX1Retired\"],\n \"6041\" : [\"SL\", \"TMLinePositionX1\"],\n \"6042\" : [\"UL\", \"TMLinePositionY1Retired\"],\n \"6043\" : [\"SL\", \"TMLinePositionY1\"],\n \"6044\" : [\"US\", \"PixelComponentOrganization\"],\n \"6046\" : [\"UL\", \"PixelComponentMask\"],\n \"6048\" : [\"UL\", \"PixelComponentRangeStart\"],\n \"604A\" : [\"UL\", \"PixelComponentRangeStop\"],\n \"604C\" : [\"US\", \"PixelComponentPhysicalUnits\"],\n \"604E\" : [\"US\", \"PixelComponentDataType\"],\n \"6050\" : [\"UL\", \"NumberOfTableBreakPoints\"],\n \"6052\" : [\"UL\", \"TableOfXBreakPoints\"],\n \"6054\" : [\"FD\", \"TableOfYBreakPoints\"],\n \"6056\" : [\"UL\", \"NumberOfTableEntries\"],\n \"6058\" : [\"UL\", \"TableOfPixelValues\"],\n \"605A\" : [\"FL\", \"TableOfParameterValues\"],\n \"6060\" : [\"FL\", \"RWaveTimeVector\"],\n \"7000\" : [\"CS\", \"DetectorConditionsNominalFlag\"],\n \"7001\" : [\"DS\", \"DetectorTemperature\"],\n \"7004\" : [\"CS\", \"DetectorType\"],\n \"7005\" : [\"CS\", \"DetectorConfiguration\"],\n \"7006\" : [\"LT\", \"DetectorDescription\"],\n \"7008\" : [\"LT\", \"DetectorMode\"],\n \"700A\" : [\"SH\", \"DetectorID\"],\n \"700C\" : [\"DA\", \"DateOfLastDetectorCalibration\"],\n \"700E\" : [\"TM\", \"TimeOfLastDetectorCalibration\"],\n \"7010\" : [\"IS\", \"ExposuresOnDetectorSinceLastCalibration\"],\n \"7011\" : [\"IS\", \"ExposuresOnDetectorSinceManufactured\"],\n \"7012\" : [\"DS\", \"DetectorTimeSinceLastExposure\"],\n \"7014\" : [\"DS\", \"DetectorActiveTime\"],\n \"7016\" : [\"DS\", \"DetectorActivationOffsetFromExposure\"],\n \"701A\" : [\"DS\", \"DetectorBinning\"],\n \"7020\" : [\"DS\", \"DetectorElementPhysicalSize\"],\n \"7022\" : [\"DS\", \"DetectorElementSpacing\"],\n \"7024\" : [\"CS\", \"DetectorActiveShape\"],\n \"7026\" : [\"DS\", \"DetectorActiveDimensions\"],\n \"7028\" : [\"DS\", \"DetectorActiveOrigin\"],\n \"702A\" : [\"LO\", \"DetectorManufacturerName\"],\n \"702B\" : [\"LO\", \"DetectorManufacturerModelName\"],\n \"7030\" : [\"DS\", \"FieldOfViewOrigin\"],\n \"7032\" : [\"DS\", \"FieldOfViewRotation\"],\n \"7034\" : [\"CS\", \"FieldOfViewHorizontalFlip\"],\n \"7036\" : [\"FL\", \"PixelDataAreaOriginRelativeToFOV\"],\n \"7038\" : [\"FL\", \"PixelDataAreaRotationAngleRelativeToFOV\"],\n \"7040\" : [\"LT\", \"GridAbsorbingMaterial\"],\n \"7041\" : [\"LT\", \"GridSpacingMaterial\"],\n \"7042\" : [\"DS\", \"GridThickness\"],\n \"7044\" : [\"DS\", \"GridPitch\"],\n \"7046\" : [\"IS\", \"GridAspectRatio\"],\n \"7048\" : [\"DS\", \"GridPeriod\"],\n \"704C\" : [\"DS\", \"GridFocalDistance\"],\n \"7050\" : [\"CS\", \"FilterMaterial\"],\n \"7052\" : [\"DS\", \"FilterThicknessMinimum\"],\n \"7054\" : [\"DS\", \"FilterThicknessMaximum\"],\n \"7056\" : [\"FL\", \"FilterBeamPathLengthMinimum\"],\n \"7058\" : [\"FL\", \"FilterBeamPathLengthMaximum\"],\n \"7060\" : [\"CS\", \"ExposureControlMode\"],\n \"7062\" : [\"LT\", \"ExposureControlModeDescription\"],\n \"7064\" : [\"CS\", \"ExposureStatus\"],\n \"7065\" : [\"DS\", \"PhototimerSetting\"],\n \"8150\" : [\"DS\", \"ExposureTimeInuS\"],\n \"8151\" : [\"DS\", \"XRayTubeCurrentInuA\"],\n \"9004\" : [\"CS\", \"ContentQualification\"],\n \"9005\" : [\"SH\", \"PulseSequenceName\"],\n \"9006\" : [\"SQ\", \"MRImagingModifierSequence\"],\n \"9008\" : [\"CS\", \"EchoPulseSequence\"],\n \"9009\" : [\"CS\", \"InversionRecovery\"],\n \"9010\" : [\"CS\", \"FlowCompensation\"],\n \"9011\" : [\"CS\", \"MultipleSpinEcho\"],\n \"9012\" : [\"CS\", \"MultiPlanarExcitation\"],\n \"9014\" : [\"CS\", \"PhaseContrast\"],\n \"9015\" : [\"CS\", \"TimeOfFlightContrast\"],\n \"9016\" : [\"CS\", \"Spoiling\"],\n \"9017\" : [\"CS\", \"SteadyStatePulseSequence\"],\n \"9018\" : [\"CS\", \"EchoPlanarPulseSequence\"],\n \"9019\" : [\"FD\", \"TagAngleFirstAxis\"],\n \"9020\" : [\"CS\", \"MagnetizationTransfer\"],\n \"9021\" : [\"CS\", \"T2Preparation\"],\n \"9022\" : [\"CS\", \"BloodSignalNulling\"],\n \"9024\" : [\"CS\", \"SaturationRecovery\"],\n \"9025\" : [\"CS\", \"SpectrallySelectedSuppression\"],\n \"9026\" : [\"CS\", \"SpectrallySelectedExcitation\"],\n \"9027\" : [\"CS\", \"SpatialPresaturation\"],\n \"9028\" : [\"CS\", \"Tagging\"],\n \"9029\" : [\"CS\", \"OversamplingPhase\"],\n \"9030\" : [\"FD\", \"TagSpacingFirstDimension\"],\n \"9032\" : [\"CS\", \"GeometryOfKSpaceTraversal\"],\n \"9033\" : [\"CS\", \"SegmentedKSpaceTraversal\"],\n \"9034\" : [\"CS\", \"RectilinearPhaseEncodeReordering\"],\n \"9035\" : [\"FD\", \"TagThickness\"],\n \"9036\" : [\"CS\", \"PartialFourierDirection\"],\n \"9037\" : [\"CS\", \"CardiacSynchronizationTechnique\"],\n \"9041\" : [\"LO\", \"ReceiveCoilManufacturerName\"],\n \"9042\" : [\"SQ\", \"MRReceiveCoilSequence\"],\n \"9043\" : [\"CS\", \"ReceiveCoilType\"],\n \"9044\" : [\"CS\", \"QuadratureReceiveCoil\"],\n \"9045\" : [\"SQ\", \"MultiCoilDefinitionSequence\"],\n \"9046\" : [\"LO\", \"MultiCoilConfiguration\"],\n \"9047\" : [\"SH\", \"MultiCoilElementName\"],\n \"9048\" : [\"CS\", \"MultiCoilElementUsed\"],\n \"9049\" : [\"SQ\", \"MRTransmitCoilSequence\"],\n \"9050\" : [\"LO\", \"TransmitCoilManufacturerName\"],\n \"9051\" : [\"CS\", \"TransmitCoilType\"],\n \"9052\" : [\"FD\", \"SpectralWidth\"],\n \"9053\" : [\"FD\", \"ChemicalShiftReference\"],\n \"9054\" : [\"CS\", \"VolumeLocalizationTechnique\"],\n \"9058\" : [\"US\", \"MRAcquisitionFrequencyEncodingSteps\"],\n \"9059\" : [\"CS\", \"Decoupling\"],\n \"9060\" : [\"CS\", \"DecoupledNucleus\"],\n \"9061\" : [\"FD\", \"DecouplingFrequency\"],\n \"9062\" : [\"CS\", \"DecouplingMethod\"],\n \"9063\" : [\"FD\", \"DecouplingChemicalShiftReference\"],\n \"9064\" : [\"CS\", \"KSpaceFiltering\"],\n \"9065\" : [\"CS\", \"TimeDomainFiltering\"],\n \"9066\" : [\"US\", \"NumberOfZeroFills\"],\n \"9067\" : [\"CS\", \"BaselineCorrection\"],\n \"9069\" : [\"FD\", \"ParallelReductionFactorInPlane\"],\n \"9070\" : [\"FD\", \"CardiacRRIntervalSpecified\"],\n \"9073\" : [\"FD\", \"AcquisitionDuration\"],\n \"9074\" : [\"DT\", \"FrameAcquisitionDateTime\"],\n \"9075\" : [\"CS\", \"DiffusionDirectionality\"],\n \"9076\" : [\"SQ\", \"DiffusionGradientDirectionSequence\"],\n \"9077\" : [\"CS\", \"ParallelAcquisition\"],\n \"9078\" : [\"CS\", \"ParallelAcquisitionTechnique\"],\n \"9079\" : [\"FD\", \"InversionTimes\"],\n \"9080\" : [\"ST\", \"MetaboliteMapDescription\"],\n \"9081\" : [\"CS\", \"PartialFourier\"],\n \"9082\" : [\"FD\", \"EffectiveEchoTime\"],\n \"9083\" : [\"SQ\", \"MetaboliteMapCodeSequence\"],\n \"9084\" : [\"SQ\", \"ChemicalShiftSequence\"],\n \"9085\" : [\"CS\", \"CardiacSignalSource\"],\n \"9087\" : [\"FD\", \"DiffusionBValue\"],\n \"9089\" : [\"FD\", \"DiffusionGradientOrientation\"],\n \"9090\" : [\"FD\", \"VelocityEncodingDirection\"],\n \"9091\" : [\"FD\", \"VelocityEncodingMinimumValue\"],\n \"9092\" : [\"SQ\", \"VelocityEncodingAcquisitionSequence\"],\n \"9093\" : [\"US\", \"NumberOfKSpaceTrajectories\"],\n \"9094\" : [\"CS\", \"CoverageOfKSpace\"],\n \"9095\" : [\"UL\", \"SpectroscopyAcquisitionPhaseRows\"],\n \"9096\" : [\"FD\", \"ParallelReductionFactorInPlaneRetired\"],\n \"9098\" : [\"FD\", \"TransmitterFrequency\"],\n \"9100\" : [\"CS\", \"ResonantNucleus\"],\n \"9101\" : [\"CS\", \"FrequencyCorrection\"],\n \"9103\" : [\"SQ\", \"MRSpectroscopyFOVGeometrySequence\"],\n \"9104\" : [\"FD\", \"SlabThickness\"],\n \"9105\" : [\"FD\", \"SlabOrientation\"],\n \"9106\" : [\"FD\", \"MidSlabPosition\"],\n \"9107\" : [\"SQ\", \"MRSpatialSaturationSequence\"],\n \"9112\" : [\"SQ\", \"MRTimingAndRelatedParametersSequence\"],\n \"9114\" : [\"SQ\", \"MREchoSequence\"],\n \"9115\" : [\"SQ\", \"MRModifierSequence\"],\n \"9117\" : [\"SQ\", \"MRDiffusionSequence\"],\n \"9118\" : [\"SQ\", \"CardiacSynchronizationSequence\"],\n \"9119\" : [\"SQ\", \"MRAveragesSequence\"],\n \"9125\" : [\"SQ\", \"MRFOVGeometrySequence\"],\n \"9126\" : [\"SQ\", \"VolumeLocalizationSequence\"],\n \"9127\" : [\"UL\", \"SpectroscopyAcquisitionDataColumns\"],\n \"9147\" : [\"CS\", \"DiffusionAnisotropyType\"],\n \"9151\" : [\"DT\", \"FrameReferenceDateTime\"],\n \"9152\" : [\"SQ\", \"MRMetaboliteMapSequence\"],\n \"9155\" : [\"FD\", \"ParallelReductionFactorOutOfPlane\"],\n \"9159\" : [\"UL\", \"SpectroscopyAcquisitionOutOfPlanePhaseSteps\"],\n \"9166\" : [\"CS\", \"BulkMotionStatus\"],\n \"9168\" : [\"FD\", \"ParallelReductionFactorSecondInPlane\"],\n \"9169\" : [\"CS\", \"CardiacBeatRejectionTechnique\"],\n \"9170\" : [\"CS\", \"RespiratoryMotionCompensationTechnique\"],\n \"9171\" : [\"CS\", \"RespiratorySignalSource\"],\n \"9172\" : [\"CS\", \"BulkMotionCompensationTechnique\"],\n \"9173\" : [\"CS\", \"BulkMotionSignalSource\"],\n \"9174\" : [\"CS\", \"ApplicableSafetyStandardAgency\"],\n \"9175\" : [\"LO\", \"ApplicableSafetyStandardDescription\"],\n \"9176\" : [\"SQ\", \"OperatingModeSequence\"],\n \"9177\" : [\"CS\", \"OperatingModeType\"],\n \"9178\" : [\"CS\", \"OperatingMode\"],\n \"9179\" : [\"CS\", \"SpecificAbsorptionRateDefinition\"],\n \"9180\" : [\"CS\", \"GradientOutputType\"],\n \"9181\" : [\"FD\", \"SpecificAbsorptionRateValue\"],\n \"9182\" : [\"FD\", \"GradientOutput\"],\n \"9183\" : [\"CS\", \"FlowCompensationDirection\"],\n \"9184\" : [\"FD\", \"TaggingDelay\"],\n \"9185\" : [\"ST\", \"RespiratoryMotionCompensationTechniqueDescription\"],\n \"9186\" : [\"SH\", \"RespiratorySignalSourceID\"],\n \"9195\" : [\"FD\", \"ChemicalShiftMinimumIntegrationLimitInHz\"],\n \"9196\" : [\"FD\", \"ChemicalShiftMaximumIntegrationLimitInHz\"],\n \"9197\" : [\"SQ\", \"MRVelocityEncodingSequence\"],\n \"9198\" : [\"CS\", \"FirstOrderPhaseCorrection\"],\n \"9199\" : [\"CS\", \"WaterReferencedPhaseCorrection\"],\n \"9200\" : [\"CS\", \"MRSpectroscopyAcquisitionType\"],\n \"9214\" : [\"CS\", \"RespiratoryCyclePosition\"],\n \"9217\" : [\"FD\", \"VelocityEncodingMaximumValue\"],\n \"9218\" : [\"FD\", \"TagSpacingSecondDimension\"],\n \"9219\" : [\"SS\", \"TagAngleSecondAxis\"],\n \"9220\" : [\"FD\", \"FrameAcquisitionDuration\"],\n \"9226\" : [\"SQ\", \"MRImageFrameTypeSequence\"],\n \"9227\" : [\"SQ\", \"MRSpectroscopyFrameTypeSequence\"],\n \"9231\" : [\"US\", \"MRAcquisitionPhaseEncodingStepsInPlane\"],\n \"9232\" : [\"US\", \"MRAcquisitionPhaseEncodingStepsOutOfPlane\"],\n \"9234\" : [\"UL\", \"SpectroscopyAcquisitionPhaseColumns\"],\n \"9236\" : [\"CS\", \"CardiacCyclePosition\"],\n \"9239\" : [\"SQ\", \"SpecificAbsorptionRateSequence\"],\n \"9240\" : [\"US\", \"RFEchoTrainLength\"],\n \"9241\" : [\"US\", \"GradientEchoTrainLength\"],\n \"9250\" : [\"CS\", \"ArterialSpinLabelingContrast\"],\n \"9251\" : [\"SQ\", \"MRArterialSpinLabelingSequence\"],\n \"9252\" : [\"LO\", \"ASLTechniqueDescription\"],\n \"9253\" : [\"US\", \"ASLSlabNumber\"],\n \"9254\" : [\"FD \", \"ASLSlabThickness\"],\n \"9255\" : [\"FD \", \"ASLSlabOrientation\"],\n \"9256\" : [\"FD \", \"ASLMidSlabPosition\"],\n \"9257\" : [\"CS\", \"ASLContext\"],\n \"9258\" : [\"UL\", \"ASLPulseTrainDuration\"],\n \"9259\" : [\"CS\", \"ASLCrusherFlag\"],\n \"925A\" : [\"FD\", \"ASLCrusherFlow\"],\n \"925B\" : [\"LO\", \"ASLCrusherDescription\"],\n \"925C\" : [\"CS\", \"ASLBolusCutoffFlag\"],\n \"925D\" : [\"SQ\", \"ASLBolusCutoffTimingSequence\"],\n \"925E\" : [\"LO\", \"ASLBolusCutoffTechnique\"],\n \"925F\" : [\"UL\", \"ASLBolusCutoffDelayTime\"],\n \"9260\" : [\"SQ\", \"ASLSlabSequence\"],\n \"9295\" : [\"FD\", \"ChemicalShiftMinimumIntegrationLimitInppm\"],\n \"9296\" : [\"FD\", \"ChemicalShiftMaximumIntegrationLimitInppm\"],\n \"9301\" : [\"SQ\", \"CTAcquisitionTypeSequence\"],\n \"9302\" : [\"CS\", \"AcquisitionType\"],\n \"9303\" : [\"FD\", \"TubeAngle\"],\n \"9304\" : [\"SQ\", \"CTAcquisitionDetailsSequence\"],\n \"9305\" : [\"FD\", \"RevolutionTime\"],\n \"9306\" : [\"FD\", \"SingleCollimationWidth\"],\n \"9307\" : [\"FD\", \"TotalCollimationWidth\"],\n \"9308\" : [\"SQ\", \"CTTableDynamicsSequence\"],\n \"9309\" : [\"FD\", \"TableSpeed\"],\n \"9310\" : [\"FD\", \"TableFeedPerRotation\"],\n \"9311\" : [\"FD\", \"SpiralPitchFactor\"],\n \"9312\" : [\"SQ\", \"CTGeometrySequence\"],\n \"9313\" : [\"FD\", \"DataCollectionCenterPatient\"],\n \"9314\" : [\"SQ\", \"CTReconstructionSequence\"],\n \"9315\" : [\"CS\", \"ReconstructionAlgorithm\"],\n \"9316\" : [\"CS\", \"ConvolutionKernelGroup\"],\n \"9317\" : [\"FD\", \"ReconstructionFieldOfView\"],\n \"9318\" : [\"FD\", \"ReconstructionTargetCenterPatient\"],\n \"9319\" : [\"FD\", \"ReconstructionAngle\"],\n \"9320\" : [\"SH\", \"ImageFilter\"],\n \"9321\" : [\"SQ\", \"CTExposureSequence\"],\n \"9322\" : [\"FD\", \"ReconstructionPixelSpacing\"],\n \"9323\" : [\"CS\", \"ExposureModulationType\"],\n \"9324\" : [\"FD\", \"EstimatedDoseSaving\"],\n \"9325\" : [\"SQ\", \"CTXRayDetailsSequence\"],\n \"9326\" : [\"SQ\", \"CTPositionSequence\"],\n \"9327\" : [\"FD\", \"TablePosition\"],\n \"9328\" : [\"FD\", \"ExposureTimeInms\"],\n \"9329\" : [\"SQ\", \"CTImageFrameTypeSequence\"],\n \"9330\" : [\"FD\", \"XRayTubeCurrentInmA\"],\n \"9332\" : [\"FD\", \"ExposureInmAs\"],\n \"9333\" : [\"CS\", \"ConstantVolumeFlag\"],\n \"9334\" : [\"CS\", \"FluoroscopyFlag\"],\n \"9335\" : [\"FD\", \"DistanceSourceToDataCollectionCenter\"],\n \"9337\" : [\"US\", \"ContrastBolusAgentNumber\"],\n \"9338\" : [\"SQ\", \"ContrastBolusIngredientCodeSequence\"],\n \"9340\" : [\"SQ\", \"ContrastAdministrationProfileSequence\"],\n \"9341\" : [\"SQ\", \"ContrastBolusUsageSequence\"],\n \"9342\" : [\"CS\", \"ContrastBolusAgentAdministered\"],\n \"9343\" : [\"CS\", \"ContrastBolusAgentDetected\"],\n \"9344\" : [\"CS\", \"ContrastBolusAgentPhase\"],\n \"9345\" : [\"FD\", \"CTDIvol\"],\n \"9346\" : [\"SQ\", \"CTDIPhantomTypeCodeSequence\"],\n \"9351\" : [\"FL\", \"CalciumScoringMassFactorPatient\"],\n \"9352\" : [\"FL\", \"CalciumScoringMassFactorDevice\"],\n \"9353\" : [\"FL\", \"EnergyWeightingFactor\"],\n \"9360\" : [\"SQ\", \"CTAdditionalXRaySourceSequence\"],\n \"9401\" : [\"SQ\", \"ProjectionPixelCalibrationSequence\"],\n \"9402\" : [\"FL\", \"DistanceSourceToIsocenter\"],\n \"9403\" : [\"FL\", \"DistanceObjectToTableTop\"],\n \"9404\" : [\"FL\", \"ObjectPixelSpacingInCenterOfBeam\"],\n \"9405\" : [\"SQ\", \"PositionerPositionSequence\"],\n \"9406\" : [\"SQ\", \"TablePositionSequence\"],\n \"9407\" : [\"SQ\", \"CollimatorShapeSequence\"],\n \"9410\" : [\"CS\", \"PlanesInAcquisition\"],\n \"9412\" : [\"SQ\", \"XAXRFFrameCharacteristicsSequence\"],\n \"9417\" : [\"SQ\", \"FrameAcquisitionSequence\"],\n \"9420\" : [\"CS\", \"XRayReceptorType\"],\n \"9423\" : [\"LO\", \"AcquisitionProtocolName\"],\n \"9424\" : [\"LT\", \"AcquisitionProtocolDescription\"],\n \"9425\" : [\"CS\", \"ContrastBolusIngredientOpaque\"],\n \"9426\" : [\"FL\", \"DistanceReceptorPlaneToDetectorHousing\"],\n \"9427\" : [\"CS\", \"IntensifierActiveShape\"],\n \"9428\" : [\"FL\", \"IntensifierActiveDimensions\"],\n \"9429\" : [\"FL\", \"PhysicalDetectorSize\"],\n \"9430\" : [\"FL\", \"PositionOfIsocenterProjection\"],\n \"9432\" : [\"SQ\", \"FieldOfViewSequence\"],\n \"9433\" : [\"LO\", \"FieldOfViewDescription\"],\n \"9434\" : [\"SQ\", \"ExposureControlSensingRegionsSequence\"],\n \"9435\" : [\"CS\", \"ExposureControlSensingRegionShape\"],\n \"9436\" : [\"SS\", \"ExposureControlSensingRegionLeftVerticalEdge\"],\n \"9437\" : [\"SS\", \"ExposureControlSensingRegionRightVerticalEdge\"],\n \"9438\" : [\"SS\", \"ExposureControlSensingRegionUpperHorizontalEdge\"],\n \"9439\" : [\"SS\", \"ExposureControlSensingRegionLowerHorizontalEdge\"],\n \"9440\" : [\"SS\", \"CenterOfCircularExposureControlSensingRegion\"],\n \"9441\" : [\"US\", \"RadiusOfCircularExposureControlSensingRegion\"],\n \"9442\" : [\"SS\", \"VerticesOfThePolygonalExposureControlSensingRegion\"],\n \"9447\" : [\"FL\", \"ColumnAngulationPatient\"],\n \"9449\" : [\"FL\", \"BeamAngle\"],\n \"9451\" : [\"SQ\", \"FrameDetectorParametersSequence\"],\n \"9452\" : [\"FL\", \"CalculatedAnatomyThickness\"],\n \"9455\" : [\"SQ\", \"CalibrationSequence\"],\n \"9456\" : [\"SQ\", \"ObjectThicknessSequence\"],\n \"9457\" : [\"CS\", \"PlaneIdentification\"],\n \"9461\" : [\"FL\", \"FieldOfViewDimensionsInFloat\"],\n \"9462\" : [\"SQ\", \"IsocenterReferenceSystemSequence\"],\n \"9463\" : [\"FL\", \"PositionerIsocenterPrimaryAngle\"],\n \"9464\" : [\"FL\", \"PositionerIsocenterSecondaryAngle\"],\n \"9465\" : [\"FL\", \"PositionerIsocenterDetectorRotationAngle\"],\n \"9466\" : [\"FL\", \"TableXPositionToIsocenter\"],\n \"9467\" : [\"FL\", \"TableYPositionToIsocenter\"],\n \"9468\" : [\"FL\", \"TableZPositionToIsocenter\"],\n \"9469\" : [\"FL\", \"TableHorizontalRotationAngle\"],\n \"9470\" : [\"FL\", \"TableHeadTiltAngle\"],\n \"9471\" : [\"FL\", \"TableCradleTiltAngle\"],\n \"9472\" : [\"SQ\", \"FrameDisplayShutterSequence\"],\n \"9473\" : [\"FL\", \"AcquiredImageAreaDoseProduct\"],\n \"9474\" : [\"CS\", \"CArmPositionerTabletopRelationship\"],\n \"9476\" : [\"SQ\", \"XRayGeometrySequence\"],\n \"9477\" : [\"SQ\", \"IrradiationEventIdentificationSequence\"],\n \"9504\" : [\"SQ\", \"XRay3DFrameTypeSequence\"],\n \"9506\" : [\"SQ\", \"ContributingSourcesSequence\"],\n \"9507\" : [\"SQ\", \"XRay3DAcquisitionSequence\"],\n \"9508\" : [\"FL\", \"PrimaryPositionerScanArc\"],\n \"9509\" : [\"FL\", \"SecondaryPositionerScanArc\"],\n \"9510\" : [\"FL \", \"PrimaryPositionerScanStartAngle\"],\n \"9511\" : [\"FL\", \"SecondaryPositionerScanStartAngle\"],\n \"9514\" : [\"FL\", \"PrimaryPositionerIncrement\"],\n \"9515\" : [\"FL\", \"SecondaryPositionerIncrement\"],\n \"9516\" : [\"DT\", \"StartAcquisitionDateTime\"],\n \"9517\" : [\"DT\", \"EndAcquisitionDateTime\"],\n \"9524\" : [\"LO\", \"ApplicationName\"],\n \"9525\" : [\"LO\", \"ApplicationVersion\"],\n \"9526\" : [\"LO\", \"ApplicationManufacturer\"],\n \"9527\" : [\"CS\", \"AlgorithmType\"],\n \"9528\" : [\"LO\", \"AlgorithmDescription\"],\n \"9530\" : [\"SQ\", \"XRay3DReconstructionSequence\"],\n \"9531\" : [\"LO\", \"ReconstructionDescription\"],\n \"9538\" : [\"SQ\", \"PerProjectionAcquisitionSequence\"],\n \"9601\" : [\"SQ\", \"DiffusionBMatrixSequence\"],\n \"9602\" : [\"FD\", \"DiffusionBValueXX\"],\n \"9603\" : [\"FD\", \"DiffusionBValueXY\"],\n \"9604\" : [\"FD\", \"DiffusionBValueXZ\"],\n \"9605\" : [\"FD\", \"DiffusionBValueYY\"],\n \"9606\" : [\"FD\", \"DiffusionBValueYZ\"],\n \"9607\" : [\"FD\", \"DiffusionBValueZZ\"],\n \"9701\" : [\"DT\", \"DecayCorrectionDateTime\"],\n \"9715\" : [\"FD\", \"StartDensityThreshold\"],\n \"9716\" : [\"FD\", \"StartRelativeDensityDifferenceThreshold\"],\n \"9717\" : [\"FD\", \"StartCardiacTriggerCountThreshold\"],\n \"9718\" : [\"FD\", \"StartRespiratoryTriggerCountThreshold\"],\n \"9719\" : [\"FD\", \"TerminationCountsThreshold\"],\n \"9720\" : [\"FD\", \"TerminationDensityThreshold\"],\n \"9721\" : [\"FD\", \"TerminationRelativeDensityThreshold\"],\n \"9722\" : [\"FD\", \"TerminationTimeThreshold\"],\n \"9723\" : [\"FD\", \"TerminationCardiacTriggerCountThreshold\"],\n \"9724\" : [\"FD\", \"TerminationRespiratoryTriggerCountThreshold\"],\n \"9725\" : [\"CS\", \"DetectorGeometry\"],\n \"9726\" : [\"FD\", \"TransverseDetectorSeparation\"],\n \"9727\" : [\"FD\", \"AxialDetectorDimension\"],\n \"9729\" : [\"US\", \"RadiopharmaceuticalAgentNumber\"],\n \"9732\" : [\"SQ\", \"PETFrameAcquisitionSequence\"],\n \"9733\" : [\"SQ\", \"PETDetectorMotionDetailsSequence\"],\n \"9734\" : [\"SQ\", \"PETTableDynamicsSequence\"],\n \"9735\" : [\"SQ\", \"PETPositionSequence\"],\n \"9736\" : [\"SQ\", \"PETFrameCorrectionFactorsSequence\"],\n \"9737\" : [\"SQ\", \"RadiopharmaceuticalUsageSequence\"],\n \"9738\" : [\"CS\", \"AttenuationCorrectionSource\"],\n \"9739\" : [\"US\", \"NumberOfIterations\"],\n \"9740\" : [\"US\", \"NumberOfSubsets\"],\n \"9749\" : [\"SQ\", \"PETReconstructionSequence\"],\n \"9751\" : [\"SQ\", \"PETFrameTypeSequence\"],\n \"9755\" : [\"CS\", \"TimeOfFlightInformationUsed\"],\n \"9756\" : [\"CS\", \"ReconstructionType\"],\n \"9758\" : [\"CS\", \"DecayCorrected\"],\n \"9759\" : [\"CS\", \"AttenuationCorrected\"],\n \"9760\" : [\"CS\", \"ScatterCorrected\"],\n \"9761\" : [\"CS\", \"DeadTimeCorrected\"],\n \"9762\" : [\"CS\", \"GantryMotionCorrected\"],\n \"9763\" : [\"CS\", \"PatientMotionCorrected\"],\n \"9764\" : [\"CS\", \"CountLossNormalizationCorrected\"],\n \"9765\" : [\"CS\", \"RandomsCorrected\"],\n \"9766\" : [\"CS\", \"NonUniformRadialSamplingCorrected\"],\n \"9767\" : [\"CS\", \"SensitivityCalibrated\"],\n \"9768\" : [\"CS\", \"DetectorNormalizationCorrection\"],\n \"9769\" : [\"CS\", \"IterativeReconstructionMethod\"],\n \"9770\" : [\"CS\", \"AttenuationCorrectionTemporalRelationship\"],\n \"9771\" : [\"SQ\", \"PatientPhysiologicalStateSequence\"],\n \"9772\" : [\"SQ\", \"PatientPhysiologicalStateCodeSequence\"],\n \"9801\" : [\"FD\", \"DepthsOfFocus\"],\n \"9803\" : [\"SQ\", \"ExcludedIntervalsSequence\"],\n \"9804\" : [\"DT\", \"ExclusionStartDatetime\"],\n \"9805\" : [\"FD\", \"ExclusionDuration\"],\n \"9806\" : [\"SQ\", \"USImageDescriptionSequence\"],\n \"9807\" : [\"SQ\", \"ImageDataTypeSequence\"],\n \"9808\" : [\"CS\", \"DataType\"],\n \"9809\" : [\"SQ\", \"TransducerScanPatternCodeSequence\"],\n \"980B\" : [\"CS\", \"AliasedDataType\"],\n \"980C\" : [\"CS\", \"PositionMeasuringDeviceUsed\"],\n \"980D\" : [\"SQ\", \"TransducerGeometryCodeSequence\"],\n \"980E\" : [\"SQ\", \"TransducerBeamSteeringCodeSequence\"],\n \"980F\" : [\"SQ\", \"TransducerApplicationCodeSequence\"],\n \"A001\" : [\"SQ\", \"ContributingEquipmentSequence\"],\n \"A002\" : [\"DT\", \"ContributionDateTime\"],\n \"A003\" : [\"ST\", \"ContributionDescription\"]\n },\n \"0020\" : {\n \"000D\" : [\"UI\", \"StudyInstanceUID\"],\n \"000E\" : [\"UI\", \"SeriesInstanceUID\"],\n \"0010\" : [\"SH\", \"StudyID\"],\n \"0011\" : [\"IS\", \"SeriesNumber\"],\n \"0012\" : [\"IS\", \"AcquisitionNumber\"],\n \"0013\" : [\"IS\", \"InstanceNumber\"],\n \"0014\" : [\"IS\", \"IsotopeNumber\"],\n \"0015\" : [\"IS\", \"PhaseNumber\"],\n \"0016\" : [\"IS\", \"IntervalNumber\"],\n \"0017\" : [\"IS\", \"TimeSlotNumber\"],\n \"0018\" : [\"IS\", \"AngleNumber\"],\n \"0019\" : [\"IS\", \"ItemNumber\"],\n \"0020\" : [\"CS\", \"PatientOrientation\"],\n \"0022\" : [\"IS\", \"OverlayNumber\"],\n \"0024\" : [\"IS\", \"CurveNumber\"],\n \"0026\" : [\"IS\", \"LUTNumber\"],\n \"0030\" : [\"DS\", \"ImagePosition\"],\n \"0032\" : [\"DS\", \"ImagePositionPatient\"],\n \"0035\" : [\"DS\", \"ImageOrientation\"],\n \"0037\" : [\"DS\", \"ImageOrientationPatient\"],\n \"0050\" : [\"DS\", \"Location\"],\n \"0052\" : [\"UI\", \"FrameOfReferenceUID\"],\n \"0060\" : [\"CS\", \"Laterality\"],\n \"0062\" : [\"CS\", \"ImageLaterality\"],\n \"0070\" : [\"LO\", \"ImageGeometryType\"],\n \"0080\" : [\"CS\", \"MaskingImage\"],\n \"00AA\" : [\"IS\", \"ReportNumber\"],\n \"0100\" : [\"IS\", \"TemporalPositionIdentifier\"],\n \"0105\" : [\"IS\", \"NumberOfTemporalPositions\"],\n \"0110\" : [\"DS\", \"TemporalResolution\"],\n \"0200\" : [\"UI\", \"SynchronizationFrameOfReferenceUID\"],\n \"0242\" : [\"UI\", \"SOPInstanceUIDOfConcatenationSource\"],\n \"1000\" : [\"IS\", \"SeriesInStudy\"],\n \"1001\" : [\"IS\", \"AcquisitionsInSeries\"],\n \"1002\" : [\"IS\", \"ImagesInAcquisition\"],\n \"1003\" : [\"IS\", \"ImagesInSeries\"],\n \"1004\" : [\"IS\", \"AcquisitionsInStudy\"],\n \"1005\" : [\"IS\", \"ImagesInStudy\"],\n \"1020\" : [\"LO\", \"Reference\"],\n \"1040\" : [\"LO\", \"PositionReferenceIndicator\"],\n \"1041\" : [\"DS\", \"SliceLocation\"],\n \"1070\" : [\"IS\", \"OtherStudyNumbers\"],\n \"1200\" : [\"IS\", \"NumberOfPatientRelatedStudies\"],\n \"1202\" : [\"IS\", \"NumberOfPatientRelatedSeries\"],\n \"1204\" : [\"IS\", \"NumberOfPatientRelatedInstances\"],\n \"1206\" : [\"IS\", \"NumberOfStudyRelatedSeries\"],\n \"1208\" : [\"IS\", \"NumberOfStudyRelatedInstances\"],\n \"1209\" : [\"IS\", \"NumberOfSeriesRelatedInstances\"],\n \"3401\" : [\"CS\", \"ModifyingDeviceID\"],\n \"3402\" : [\"CS\", \"ModifiedImageID\"],\n \"3403\" : [\"DA\", \"ModifiedImageDate\"],\n \"3404\" : [\"LO\", \"ModifyingDeviceManufacturer\"],\n \"3405\" : [\"TM\", \"ModifiedImageTime\"],\n \"3406\" : [\"LO\", \"ModifiedImageDescription\"],\n \"4000\" : [\"LT\", \"ImageComments\"],\n \"5000\" : [\"AT\", \"OriginalImageIdentification\"],\n \"5002\" : [\"LO\", \"OriginalImageIdentificationNomenclature\"],\n \"9056\" : [\"SH\", \"StackID\"],\n \"9057\" : [\"UL\", \"InStackPositionNumber\"],\n \"9071\" : [\"SQ\", \"FrameAnatomySequence\"],\n \"9072\" : [\"CS\", \"FrameLaterality\"],\n \"9111\" : [\"SQ\", \"FrameContentSequence\"],\n \"9113\" : [\"SQ\", \"PlanePositionSequence\"],\n \"9116\" : [\"SQ\", \"PlaneOrientationSequence\"],\n \"9128\" : [\"UL\", \"TemporalPositionIndex\"],\n \"9153\" : [\"FD\", \"NominalCardiacTriggerDelayTime\"],\n \"9154\" : [\"FL\", \"NominalCardiacTriggerTimePriorToRPeak\"],\n \"9155\" : [\"FL\", \"ActualCardiacTriggerTimePriorToRPeak\"],\n \"9156\" : [\"US\", \"FrameAcquisitionNumber\"],\n \"9157\" : [\"UL\", \"DimensionIndexValues\"],\n \"9158\" : [\"LT\", \"FrameComments\"],\n \"9161\" : [\"UI\", \"ConcatenationUID\"],\n \"9162\" : [\"US\", \"InConcatenationNumber\"],\n \"9163\" : [\"US\", \"InConcatenationTotalNumber\"],\n \"9164\" : [\"UI\", \"DimensionOrganizationUID\"],\n \"9165\" : [\"AT\", \"DimensionIndexPointer\"],\n \"9167\" : [\"AT\", \"FunctionalGroupPointer\"],\n \"9213\" : [\"LO\", \"DimensionIndexPrivateCreator\"],\n \"9221\" : [\"SQ\", \"DimensionOrganizationSequence\"],\n \"9222\" : [\"SQ\", \"DimensionIndexSequence\"],\n \"9228\" : [\"UL\", \"ConcatenationFrameOffsetNumber\"],\n \"9238\" : [\"LO\", \"FunctionalGroupPrivateCreator\"],\n \"9241\" : [\"FL\", \"NominalPercentageOfCardiacPhase\"],\n \"9245\" : [\"FL\", \"NominalPercentageOfRespiratoryPhase\"],\n \"9246\" : [\"FL\", \"StartingRespiratoryAmplitude\"],\n \"9247\" : [\"CS\", \"StartingRespiratoryPhase\"],\n \"9248\" : [\"FL\", \"EndingRespiratoryAmplitude\"],\n \"9249\" : [\"CS\", \"EndingRespiratoryPhase\"],\n \"9250\" : [\"CS\", \"RespiratoryTriggerType\"],\n \"9251\" : [\"FD\", \"RRIntervalTimeNominal\"],\n \"9252\" : [\"FD\", \"ActualCardiacTriggerDelayTime\"],\n \"9253\" : [\"SQ\", \"RespiratorySynchronizationSequence\"],\n \"9254\" : [\"FD\", \"RespiratoryIntervalTime\"],\n \"9255\" : [\"FD\", \"NominalRespiratoryTriggerDelayTime\"],\n \"9256\" : [\"FD\", \"RespiratoryTriggerDelayThreshold\"],\n \"9257\" : [\"FD\", \"ActualRespiratoryTriggerDelayTime\"],\n \"9301\" : [\"FD\", \"ImagePositionVolume\"],\n \"9302\" : [\"FD\", \"ImageOrientationVolume\"],\n \"9307\" : [\"CS\", \"UltrasoundAcquisitionGeometry\"],\n \"9308\" : [\"FD\", \"ApexPosition\"],\n \"9309\" : [\"FD\", \"VolumeToTransducerMappingMatrix\"],\n \"930A\" : [\"FD\", \"VolumeToTableMappingMatrix\"],\n \"930C\" : [\"CS\", \"PatientFrameOfReferenceSource\"],\n \"930D\" : [\"FD\", \"TemporalPositionTimeOffset\"],\n \"930E\" : [\"SQ\", \"PlanePositionVolumeSequence\"],\n \"930F\" : [\"SQ\", \"PlaneOrientationVolumeSequence\"],\n \"9310\" : [\"SQ\", \"TemporalPositionSequence\"],\n \"9311\" : [\"CS\", \"DimensionOrganizationType\"],\n \"9312\" : [\"UI\", \"VolumeFrameOfReferenceUID\"],\n \"9313\" : [\"UI\", \"TableFrameOfReferenceUID\"],\n \"9421\" : [\"LO\", \"DimensionDescriptionLabel\"],\n \"9450\" : [\"SQ\", \"PatientOrientationInFrameSequence\"],\n \"9453\" : [\"LO\", \"FrameLabel\"],\n \"9518\" : [\"US\", \"AcquisitionIndex\"],\n \"9529\" : [\"SQ\", \"ContributingSOPInstancesReferenceSequence\"],\n \"9536\" : [\"US\", \"ReconstructionIndex\"]\n },\n \"0022\" : {\n \"0001\" : [\"US\", \"LightPathFilterPassThroughWavelength\"],\n \"0002\" : [\"US\", \"LightPathFilterPassBand\"],\n \"0003\" : [\"US\", \"ImagePathFilterPassThroughWavelength\"],\n \"0004\" : [\"US\", \"ImagePathFilterPassBand\"],\n \"0005\" : [\"CS\", \"PatientEyeMovementCommanded\"],\n \"0006\" : [\"SQ\", \"PatientEyeMovementCommandCodeSequence\"],\n \"0007\" : [\"FL\", \"SphericalLensPower\"],\n \"0008\" : [\"FL\", \"CylinderLensPower\"],\n \"0009\" : [\"FL\", \"CylinderAxis\"],\n \"000A\" : [\"FL\", \"EmmetropicMagnification\"],\n \"000B\" : [\"FL\", \"IntraOcularPressure\"],\n \"000C\" : [\"FL\", \"HorizontalFieldOfView\"],\n \"000D\" : [\"CS\", \"PupilDilated\"],\n \"000E\" : [\"FL\", \"DegreeOfDilation\"],\n \"0010\" : [\"FL\", \"StereoBaselineAngle\"],\n \"0011\" : [\"FL\", \"StereoBaselineDisplacement\"],\n \"0012\" : [\"FL\", \"StereoHorizontalPixelOffset\"],\n \"0013\" : [\"FL\", \"StereoVerticalPixelOffset\"],\n \"0014\" : [\"FL\", \"StereoRotation\"],\n \"0015\" : [\"SQ\", \"AcquisitionDeviceTypeCodeSequence\"],\n \"0016\" : [\"SQ\", \"IlluminationTypeCodeSequence\"],\n \"0017\" : [\"SQ\", \"LightPathFilterTypeStackCodeSequence\"],\n \"0018\" : [\"SQ\", \"ImagePathFilterTypeStackCodeSequence\"],\n \"0019\" : [\"SQ\", \"LensesCodeSequence\"],\n \"001A\" : [\"SQ\", \"ChannelDescriptionCodeSequence\"],\n \"001B\" : [\"SQ\", \"RefractiveStateSequence\"],\n \"001C\" : [\"SQ\", \"MydriaticAgentCodeSequence\"],\n \"001D\" : [\"SQ\", \"RelativeImagePositionCodeSequence\"],\n \"001E\" : [\"FL\", \"CameraAngleOfView\"],\n \"0020\" : [\"SQ\", \"StereoPairsSequence\"],\n \"0021\" : [\"SQ\", \"LeftImageSequence\"],\n \"0022\" : [\"SQ\", \"RightImageSequence\"],\n \"0030\" : [\"FL\", \"AxialLengthOfTheEye\"],\n \"0031\" : [\"SQ\", \"OphthalmicFrameLocationSequence\"],\n \"0032\" : [\"FL\", \"ReferenceCoordinates\"],\n \"0035\" : [\"FL\", \"DepthSpatialResolution\"],\n \"0036\" : [\"FL\", \"MaximumDepthDistortion\"],\n \"0037\" : [\"FL\", \"AlongScanSpatialResolution\"],\n \"0038\" : [\"FL\", \"MaximumAlongScanDistortion\"],\n \"0039\" : [\"CS\", \"OphthalmicImageOrientation\"],\n \"0041\" : [\"FL\", \"DepthOfTransverseImage\"],\n \"0042\" : [\"SQ\", \"MydriaticAgentConcentrationUnitsSequence\"],\n \"0048\" : [\"FL\", \"AcrossScanSpatialResolution\"],\n \"0049\" : [\"FL\", \"MaximumAcrossScanDistortion\"],\n \"004E\" : [\"DS\", \"MydriaticAgentConcentration\"],\n \"0055\" : [\"FL\", \"IlluminationWaveLength\"],\n \"0056\" : [\"FL\", \"IlluminationPower\"],\n \"0057\" : [\"FL\", \"IlluminationBandwidth\"],\n \"0058\" : [\"SQ\", \"MydriaticAgentSequence\"],\n \"1007\" : [\"SQ\", \"OphthalmicAxialMeasurementsRightEyeSequence\"],\n \"1008\" : [\"SQ\", \"OphthalmicAxialMeasurementsLeftEyeSequence\"],\n \"1010\" : [\"CS\", \"OphthalmicAxialLengthMeasurementsType\"],\n \"1019\" : [\"FL\", \"OphthalmicAxialLength\"],\n \"1024\" : [\"SQ\", \"LensStatusCodeSequence\"],\n \"1025\" : [\"SQ\", \"VitreousStatusCodeSequence\"],\n \"1028\" : [\"SQ\", \"IOLFormulaCodeSequence\"],\n \"1029\" : [\"LO\", \"IOLFormulaDetail\"],\n \"1033\" : [\"FL\", \"KeratometerIndex\"],\n \"1035\" : [\"SQ\", \"SourceOfOphthalmicAxialLengthCodeSequence\"],\n \"1037\" : [\"FL\", \"TargetRefraction\"],\n \"1039\" : [\"CS\", \"RefractiveProcedureOccurred\"],\n \"1040\" : [\"SQ\", \"RefractiveSurgeryTypeCodeSequence\"],\n \"1044\" : [\"SQ\", \"OphthalmicUltrasoundAxialMeasurementsTypeCodeSequence\"],\n \"1050\" : [\"SQ\", \"OphthalmicAxialLengthMeasurementsSequence\"],\n \"1053\" : [\"FL\", \"IOLPower\"],\n \"1054\" : [\"FL\", \"PredictedRefractiveError\"],\n \"1059\" : [\"FL\", \"OphthalmicAxialLengthVelocity\"],\n \"1065\" : [\"LO\", \"LensStatusDescription\"],\n \"1066\" : [\"LO\", \"VitreousStatusDescription\"],\n \"1090\" : [\"SQ\", \"IOLPowerSequence\"],\n \"1092\" : [\"SQ\", \"LensConstantSequence\"],\n \"1093\" : [\"LO\", \"IOLManufacturer\"],\n \"1094\" : [\"LO\", \"LensConstantDescription\"],\n \"1096\" : [\"SQ\", \"KeratometryMeasurementTypeCodeSequence\"],\n \"1100\" : [\"SQ\", \"ReferencedOphthalmicAxialMeasurementsSequence\"],\n \"1101\" : [\"SQ\", \"OphthalmicAxialLengthMeasurementsSegmentNameCodeSequence\"],\n \"1103\" : [\"SQ\", \"RefractiveErrorBeforeRefractiveSurgeryCodeSequence\"],\n \"1121\" : [\"FL\", \"IOLPowerForExactEmmetropia\"],\n \"1122\" : [\"FL\", \"IOLPowerForExactTargetRefraction\"],\n \"1125\" : [\"SQ\", \"AnteriorChamberDepthDefinitionCodeSequence\"],\n \"1130\" : [\"FL\", \"LensThickness\"],\n \"1131\" : [\"FL\", \"AnteriorChamberDepth\"],\n \"1132\" : [\"SQ\", \"SourceOfLensThicknessDataCodeSequence\"],\n \"1133\" : [\"SQ\", \"SourceOfAnteriorChamberDepthDataCodeSequence\"],\n \"1135\" : [\"SQ\", \"SourceOfRefractiveErrorDataCodeSequence\"],\n \"1140\" : [\"CS\", \"OphthalmicAxialLengthMeasurementModified\"],\n \"1150\" : [\"SQ\", \"OphthalmicAxialLengthDataSourceCodeSequence\"],\n \"1153\" : [\"SQ\", \"OphthalmicAxialLengthAcquisitionMethodCodeSequence\"],\n \"1155\" : [\"FL\", \"SignalToNoiseRatio\"],\n \"1159\" : [\"LO\", \"OphthalmicAxialLengthDataSourceDescription\"],\n \"1210\" : [\"SQ\", \"OphthalmicAxialLengthMeasurementsTotalLengthSequence\"],\n \"1211\" : [\"SQ\", \"OphthalmicAxialLengthMeasurementsSegmentalLengthSequence\"],\n \"1212\" : [\"SQ\", \"OphthalmicAxialLengthMeasurementsLengthSummationSequence\"],\n \"1220\" : [\"SQ\", \"UltrasoundOphthalmicAxialLengthMeasurementsSequence\"],\n \"1225\" : [\"SQ\", \"OpticalOphthalmicAxialLengthMeasurementsSequence\"],\n \"1230\" : [\"SQ\", \"UltrasoundSelectedOphthalmicAxialLengthSequence\"],\n \"1250\" : [\"SQ\", \"OphthalmicAxialLengthSelectionMethodCodeSequence\"],\n \"1255\" : [\"SQ\", \"OpticalSelectedOphthalmicAxialLengthSequence\"],\n \"1257\" : [\"SQ\", \"SelectedSegmentalOphthalmicAxialLengthSequence\"],\n \"1260\" : [\"SQ\", \"SelectedTotalOphthalmicAxialLengthSequence\"],\n \"1262\" : [\"SQ\", \"OphthalmicAxialLengthQualityMetricSequence\"],\n \"1273\" : [\"LO\", \"OphthalmicAxialLengthQualityMetricTypeDescription\"],\n \"1300\" : [\"SQ\", \"IntraocularLensCalculationsRightEyeSequence\"],\n \"1310\" : [\"SQ\", \"IntraocularLensCalculationsLeftEyeSequence\"],\n \"1330\" : [\"SQ\", \"ReferencedOphthalmicAxialLengthMeasurementQCImageSequence\"]\n },\n \"0024\" : {\n \"0010\" : [\"FL\", \"VisualFieldHorizontalExtent\"],\n \"0011\" : [\"FL\", \"VisualFieldVerticalExtent\"],\n \"0012\" : [\"CS\", \"VisualFieldShape\"],\n \"0016\" : [\"SQ\", \"ScreeningTestModeCodeSequence\"],\n \"0018\" : [\"FL\", \"MaximumStimulusLuminance\"],\n \"0020\" : [\"FL\", \"BackgroundLuminance\"],\n \"0021\" : [\"SQ\", \"StimulusColorCodeSequence\"],\n \"0024\" : [\"SQ\", \"BackgroundIlluminationColorCodeSequence\"],\n \"0025\" : [\"FL\", \"StimulusArea\"],\n \"0028\" : [\"FL\", \"StimulusPresentationTime\"],\n \"0032\" : [\"SQ\", \"FixationSequence\"],\n \"0033\" : [\"SQ\", \"FixationMonitoringCodeSequence\"],\n \"0034\" : [\"SQ\", \"VisualFieldCatchTrialSequence\"],\n \"0035\" : [\"US\", \"FixationCheckedQuantity\"],\n \"0036\" : [\"US\", \"PatientNotProperlyFixatedQuantity\"],\n \"0037\" : [\"CS\", \"PresentedVisualStimuliDataFlag\"],\n \"0038\" : [\"US\", \"NumberOfVisualStimuli\"],\n \"0039\" : [\"CS\", \"ExcessiveFixationLossesDataFlag\"],\n \"0040\" : [\"CS\", \"ExcessiveFixationLosses\"],\n \"0042\" : [\"US\", \"StimuliRetestingQuantity\"],\n \"0044\" : [\"LT\", \"CommentsOnPatientPerformanceOfVisualField\"],\n \"0045\" : [\"CS\", \"FalseNegativesEstimateFlag\"],\n \"0046\" : [\"FL\", \"FalseNegativesEstimate\"],\n \"0048\" : [\"US\", \"NegativeCatchTrialsQuantity\"],\n \"0050\" : [\"US\", \"FalseNegativesQuantity\"],\n \"0051\" : [\"CS\", \"ExcessiveFalseNegativesDataFlag\"],\n \"0052\" : [\"CS\", \"ExcessiveFalseNegatives\"],\n \"0053\" : [\"CS\", \"FalsePositivesEstimateFlag\"],\n \"0054\" : [\"FL\", \"FalsePositivesEstimate\"],\n \"0055\" : [\"CS\", \"CatchTrialsDataFlag\"],\n \"0056\" : [\"US\", \"PositiveCatchTrialsQuantity\"],\n \"0057\" : [\"CS\", \"TestPointNormalsDataFlag\"],\n \"0058\" : [\"SQ\", \"TestPointNormalsSequence\"],\n \"0059\" : [\"CS\", \"GlobalDeviationProbabilityNormalsFlag\"],\n \"0060\" : [\"US\", \"FalsePositivesQuantity\"],\n \"0061\" : [\"CS\", \"ExcessiveFalsePositivesDataFlag\"],\n \"0062\" : [\"CS\", \"ExcessiveFalsePositives\"],\n \"0063\" : [\"CS\", \"VisualFieldTestNormalsFlag\"],\n \"0064\" : [\"SQ\", \"ResultsNormalsSequence\"],\n \"0065\" : [\"SQ\", \"AgeCorrectedSensitivityDeviationAlgorithmSequence\"],\n \"0066\" : [\"FL\", \"GlobalDeviationFromNormal\"],\n \"0067\" : [\"SQ\", \"GeneralizedDefectSensitivityDeviationAlgorithmSequence\"],\n \"0068\" : [\"FL\", \"LocalizedDeviationfromNormal\"],\n \"0069\" : [\"LO\", \"PatientReliabilityIndicator\"],\n \"0070\" : [\"FL\", \"VisualFieldMeanSensitivity\"],\n \"0071\" : [\"FL\", \"GlobalDeviationProbability\"],\n \"0072\" : [\"CS\", \"LocalDeviationProbabilityNormalsFlag\"],\n \"0073\" : [\"FL\", \"LocalizedDeviationProbability\"],\n \"0074\" : [\"CS\", \"ShortTermFluctuationCalculated\"],\n \"0075\" : [\"FL\", \"ShortTermFluctuation\"],\n \"0076\" : [\"CS\", \"ShortTermFluctuationProbabilityCalculated\"],\n \"0077\" : [\"FL\", \"ShortTermFluctuationProbability\"],\n \"0078\" : [\"CS\", \"CorrectedLocalizedDeviationFromNormalCalculated\"],\n \"0079\" : [\"FL\", \"CorrectedLocalizedDeviationFromNormal\"],\n \"0080\" : [\"CS\", \"CorrectedLocalizedDeviationFromNormalProbabilityCalculated\"],\n \"0081\" : [\"FL\", \"CorrectedLocalizedDeviationFromNormalProbability\"],\n \"0083\" : [\"SQ\", \"GlobalDeviationProbabilitySequence\"],\n \"0085\" : [\"SQ\", \"LocalizedDeviationProbabilitySequence\"],\n \"0086\" : [\"CS\", \"FovealSensitivityMeasured\"],\n \"0087\" : [\"FL\", \"FovealSensitivity\"],\n \"0088\" : [\"FL\", \"VisualFieldTestDuration\"],\n \"0089\" : [\"SQ\", \"VisualFieldTestPointSequence\"],\n \"0090\" : [\"FL\", \"VisualFieldTestPointXCoordinate\"],\n \"0091\" : [\"FL\", \"VisualFieldTestPointYCoordinate\"],\n \"0092\" : [\"FL\", \"AgeCorrectedSensitivityDeviationValue\"],\n \"0093\" : [\"CS\", \"StimulusResults\"],\n \"0094\" : [\"FL\", \"SensitivityValue\"],\n \"0095\" : [\"CS\", \"RetestStimulusSeen\"],\n \"0096\" : [\"FL\", \"RetestSensitivityValue\"],\n \"0097\" : [\"SQ\", \"VisualFieldTestPointNormalsSequence\"],\n \"0098\" : [\"FL\", \"QuantifiedDefect\"],\n \"0100\" : [\"FL\", \"AgeCorrectedSensitivityDeviationProbabilityValue\"],\n \"0102\" : [\"CS\", \"GeneralizedDefectCorrectedSensitivityDeviationFlag \"],\n \"0103\" : [\"FL\", \"GeneralizedDefectCorrectedSensitivityDeviationValue \"],\n \"0104\" : [\"FL\", \"GeneralizedDefectCorrectedSensitivityDeviationProbabilityValue\"],\n \"0105\" : [\"FL \", \"MinimumSensitivityValue\"],\n \"0106\" : [\"CS\", \"BlindSpotLocalized\"],\n \"0107\" : [\"FL\", \"BlindSpotXCoordinate\"],\n \"0108\" : [\"FL\", \"BlindSpotYCoordinate \"],\n \"0110\" : [\"SQ\", \"VisualAcuityMeasurementSequence\"],\n \"0112\" : [\"SQ\", \"RefractiveParametersUsedOnPatientSequence\"],\n \"0113\" : [\"CS\", \"MeasurementLaterality\"],\n \"0114\" : [\"SQ\", \"OphthalmicPatientClinicalInformationLeftEyeSequence\"],\n \"0115\" : [\"SQ\", \"OphthalmicPatientClinicalInformationRightEyeSequence\"],\n \"0117\" : [\"CS\", \"FovealPointNormativeDataFlag\"],\n \"0118\" : [\"FL\", \"FovealPointProbabilityValue\"],\n \"0120\" : [\"CS\", \"ScreeningBaselineMeasured\"],\n \"0122\" : [\"SQ\", \"ScreeningBaselineMeasuredSequence\"],\n \"0124\" : [\"CS\", \"ScreeningBaselineType\"],\n \"0126\" : [\"FL\", \"ScreeningBaselineValue\"],\n \"0202\" : [\"LO\", \"AlgorithmSource\"],\n \"0306\" : [\"LO\", \"DataSetName\"],\n \"0307\" : [\"LO\", \"DataSetVersion\"],\n \"0308\" : [\"LO\", \"DataSetSource\"],\n \"0309\" : [\"LO\", \"DataSetDescription\"],\n \"0317\" : [\"SQ\", \"VisualFieldTestReliabilityGlobalIndexSequence\"],\n \"0320\" : [\"SQ\", \"VisualFieldGlobalResultsIndexSequence\"],\n \"0325\" : [\"SQ\", \"DataObservationSequence\"],\n \"0338\" : [\"CS\", \"IndexNormalsFlag\"],\n \"0341\" : [\"FL\", \"IndexProbability\"],\n \"0344\" : [\"SQ\", \"IndexProbabilitySequence\"]\n },\n \"0028\" : {\n \"0002\" : [\"US\", \"SamplesPerPixel\"],\n \"0003\" : [\"US\", \"SamplesPerPixelUsed\"],\n \"0004\" : [\"CS\", \"PhotometricInterpretation\"],\n \"0005\" : [\"US\", \"ImageDimensions\"],\n \"0006\" : [\"US\", \"PlanarConfiguration\"],\n \"0008\" : [\"IS\", \"NumberOfFrames\"],\n \"0009\" : [\"AT\", \"FrameIncrementPointer\"],\n \"000A\" : [\"AT\", \"FrameDimensionPointer\"],\n \"0010\" : [\"US\", \"Rows\"],\n \"0011\" : [\"US\", \"Columns\"],\n \"0012\" : [\"US\", \"Planes\"],\n \"0014\" : [\"US\", \"UltrasoundColorDataPresent\"],\n \"0030\" : [\"DS\", \"PixelSpacing\"],\n \"0031\" : [\"DS\", \"ZoomFactor\"],\n \"0032\" : [\"DS\", \"ZoomCenter\"],\n \"0034\" : [\"IS\", \"PixelAspectRatio\"],\n \"0040\" : [\"CS\", \"ImageFormat\"],\n \"0050\" : [\"LO\", \"ManipulatedImage\"],\n \"0051\" : [\"CS\", \"CorrectedImage\"],\n \"005F\" : [\"LO\", \"CompressionRecognitionCode\"],\n \"0060\" : [\"CS\", \"CompressionCode\"],\n \"0061\" : [\"SH\", \"CompressionOriginator\"],\n \"0062\" : [\"LO\", \"CompressionLabel\"],\n \"0063\" : [\"SH\", \"CompressionDescription\"],\n \"0065\" : [\"CS\", \"CompressionSequence\"],\n \"0066\" : [\"AT\", \"CompressionStepPointers\"],\n \"0068\" : [\"US\", \"RepeatInterval\"],\n \"0069\" : [\"US\", \"BitsGrouped\"],\n \"0070\" : [\"US\", \"PerimeterTable\"],\n \"0071\" : [\"SS\", \"PerimeterValue\"],\n \"0080\" : [\"US\", \"PredictorRows\"],\n \"0081\" : [\"US\", \"PredictorColumns\"],\n \"0082\" : [\"US\", \"PredictorConstants\"],\n \"0090\" : [\"CS\", \"BlockedPixels\"],\n \"0091\" : [\"US\", \"BlockRows\"],\n \"0092\" : [\"US\", \"BlockColumns\"],\n \"0093\" : [\"US\", \"RowOverlap\"],\n \"0094\" : [\"US\", \"ColumnOverlap\"],\n \"0100\" : [\"US\", \"BitsAllocated\"],\n \"0101\" : [\"US\", \"BitsStored\"],\n \"0102\" : [\"US\", \"HighBit\"],\n \"0103\" : [\"US\", \"PixelRepresentation\"],\n \"0104\" : [\"SS\", \"SmallestValidPixelValue\"],\n \"0105\" : [\"SS\", \"LargestValidPixelValue\"],\n \"0106\" : [\"SS\", \"SmallestImagePixelValue\"],\n \"0107\" : [\"SS\", \"LargestImagePixelValue\"],\n \"0108\" : [\"SS\", \"SmallestPixelValueInSeries\"],\n \"0109\" : [\"SS\", \"LargestPixelValueInSeries\"],\n \"0110\" : [\"SS\", \"SmallestImagePixelValueInPlane\"],\n \"0111\" : [\"SS\", \"LargestImagePixelValueInPlane\"],\n \"0120\" : [\"SS\", \"PixelPaddingValue\"],\n \"0121\" : [\"SS\", \"PixelPaddingRangeLimit\"],\n \"0200\" : [\"US\", \"ImageLocation\"],\n \"0300\" : [\"CS\", \"QualityControlImage\"],\n \"0301\" : [\"CS\", \"BurnedInAnnotation\"],\n \"0302\" : [\"CS\", \"RecognizableVisualFeatures\"],\n \"0303\" : [\"CS\", \"LongitudinalTemporalInformationModified\"],\n \"0400\" : [\"LO\", \"TransformLabel\"],\n \"0401\" : [\"LO\", \"TransformVersionNumber\"],\n \"0402\" : [\"US\", \"NumberOfTransformSteps\"],\n \"0403\" : [\"LO\", \"SequenceOfCompressedData\"],\n \"0404\" : [\"AT\", \"DetailsOfCoefficients\"],\n \"0700\" : [\"LO\", \"DCTLabel\"],\n \"0701\" : [\"CS\", \"DataBlockDescription\"],\n \"0702\" : [\"AT\", \"DataBlock\"],\n \"0710\" : [\"US\", \"NormalizationFactorFormat\"],\n \"0720\" : [\"US\", \"ZonalMapNumberFormat\"],\n \"0721\" : [\"AT\", \"ZonalMapLocation\"],\n \"0722\" : [\"US\", \"ZonalMapFormat\"],\n \"0730\" : [\"US\", \"AdaptiveMapFormat\"],\n \"0740\" : [\"US\", \"CodeNumberFormat\"],\n \"0A02\" : [\"CS\", \"PixelSpacingCalibrationType\"],\n \"0A04\" : [\"LO\", \"PixelSpacingCalibrationDescription\"],\n \"1040\" : [\"CS\", \"PixelIntensityRelationship\"],\n \"1041\" : [\"SS\", \"PixelIntensityRelationshipSign\"],\n \"1050\" : [\"DS\", \"WindowCenter\"],\n \"1051\" : [\"DS\", \"WindowWidth\"],\n \"1052\" : [\"DS\", \"RescaleIntercept\"],\n \"1053\" : [\"DS\", \"RescaleSlope\"],\n \"1054\" : [\"LO\", \"RescaleType\"],\n \"1055\" : [\"LO\", \"WindowCenterWidthExplanation\"],\n \"1056\" : [\"CS\", \"VOILUTFunction\"],\n \"1080\" : [\"CS\", \"GrayScale\"],\n \"1090\" : [\"CS\", \"RecommendedViewingMode\"],\n \"1100\" : [\"SS\", \"GrayLookupTableDescriptor\"],\n \"1101\" : [\"SS\", \"RedPaletteColorLookupTableDescriptor\"],\n \"1102\" : [\"SS\", \"GreenPaletteColorLookupTableDescriptor\"],\n \"1103\" : [\"SS\", \"BluePaletteColorLookupTableDescriptor\"],\n \"1104\" : [\"US\", \"AlphaPaletteColorLookupTableDescriptor\"],\n \"1111\" : [\"SS\", \"LargeRedPaletteColorLookupTableDescriptor\"],\n \"1112\" : [\"SS\", \"LargeGreenPaletteColorLookupTableDescriptor\"],\n \"1113\" : [\"SS\", \"LargeBluePaletteColorLookupTableDescriptor\"],\n \"1199\" : [\"UI\", \"PaletteColorLookupTableUID\"],\n \"1200\" : [\"OW\", \"GrayLookupTableData\"],\n \"1201\" : [\"OW\", \"RedPaletteColorLookupTableData\"],\n \"1202\" : [\"OW\", \"GreenPaletteColorLookupTableData\"],\n \"1203\" : [\"OW\", \"BluePaletteColorLookupTableData\"],\n \"1204\" : [\"OW\", \"AlphaPaletteColorLookupTableData\"],\n \"1211\" : [\"OW\", \"LargeRedPaletteColorLookupTableData\"],\n \"1212\" : [\"OW\", \"LargeGreenPaletteColorLookupTableData\"],\n \"1213\" : [\"OW\", \"LargeBluePaletteColorLookupTableData\"],\n \"1214\" : [\"UI\", \"LargePaletteColorLookupTableUID\"],\n \"1221\" : [\"OW\", \"SegmentedRedPaletteColorLookupTableData\"],\n \"1222\" : [\"OW\", \"SegmentedGreenPaletteColorLookupTableData\"],\n \"1223\" : [\"OW\", \"SegmentedBluePaletteColorLookupTableData\"],\n \"1300\" : [\"CS\", \"BreastImplantPresent\"],\n \"1350\" : [\"CS\", \"PartialView\"],\n \"1351\" : [\"ST\", \"PartialViewDescription\"],\n \"1352\" : [\"SQ\", \"PartialViewCodeSequence\"],\n \"135A\" : [\"CS\", \"SpatialLocationsPreserved\"],\n \"1401\" : [\"SQ\", \"DataFrameAssignmentSequence\"],\n \"1402\" : [\"CS\", \"DataPathAssignment\"],\n \"1403\" : [\"US\", \"BitsMappedToColorLookupTable\"],\n \"1404\" : [\"SQ\", \"BlendingLUT1Sequence\"],\n \"1405\" : [\"CS\", \"BlendingLUT1TransferFunction\"],\n \"1406\" : [\"FD\", \"BlendingWeightConstant\"],\n \"1407\" : [\"US\", \"BlendingLookupTableDescriptor\"],\n \"1408\" : [\"OW\", \"BlendingLookupTableData\"],\n \"140B\" : [\"SQ\", \"EnhancedPaletteColorLookupTableSequence\"],\n \"140C\" : [\"SQ\", \"BlendingLUT2Sequence\"],\n \"140D\" : [\"CS\", \"BlendingLUT2TransferFunction\"],\n \"140E\" : [\"CS\", \"DataPathID\"],\n \"140F\" : [\"CS\", \"RGBLUTTransferFunction\"],\n \"1410\" : [\"CS\", \"AlphaLUTTransferFunction\"],\n \"2000\" : [\"OB\", \"ICCProfile\"],\n \"2110\" : [\"CS\", \"LossyImageCompression\"],\n \"2112\" : [\"DS\", \"LossyImageCompressionRatio\"],\n \"2114\" : [\"CS\", \"LossyImageCompressionMethod\"],\n \"3000\" : [\"SQ\", \"ModalityLUTSequence\"],\n \"3002\" : [\"SS\", \"LUTDescriptor\"],\n \"3003\" : [\"LO\", \"LUTExplanation\"],\n \"3004\" : [\"LO\", \"ModalityLUTType\"],\n \"3006\" : [\"OW\", \"LUTData\"],\n \"3010\" : [\"SQ\", \"VOILUTSequence\"],\n \"3110\" : [\"SQ\", \"SoftcopyVOILUTSequence\"],\n \"4000\" : [\"LT\", \"ImagePresentationComments\"],\n \"5000\" : [\"SQ\", \"BiPlaneAcquisitionSequence\"],\n \"6010\" : [\"US\", \"RepresentativeFrameNumber\"],\n \"6020\" : [\"US\", \"FrameNumbersOfInterest\"],\n \"6022\" : [\"LO\", \"FrameOfInterestDescription\"],\n \"6023\" : [\"CS\", \"FrameOfInterestType\"],\n \"6030\" : [\"US\", \"MaskPointers\"],\n \"6040\" : [\"US\", \"RWavePointer\"],\n \"6100\" : [\"SQ\", \"MaskSubtractionSequence\"],\n \"6101\" : [\"CS\", \"MaskOperation\"],\n \"6102\" : [\"US\", \"ApplicableFrameRange\"],\n \"6110\" : [\"US\", \"MaskFrameNumbers\"],\n \"6112\" : [\"US\", \"ContrastFrameAveraging\"],\n \"6114\" : [\"FL\", \"MaskSubPixelShift\"],\n \"6120\" : [\"SS\", \"TIDOffset\"],\n \"6190\" : [\"ST\", \"MaskOperationExplanation\"],\n \"7FE0\" : [\"UT\", \"PixelDataProviderURL\"],\n \"9001\" : [\"UL\", \"DataPointRows\"],\n \"9002\" : [\"UL\", \"DataPointColumns\"],\n \"9003\" : [\"CS\", \"SignalDomainColumns\"],\n \"9099\" : [\"US\", \"LargestMonochromePixelValue\"],\n \"9108\" : [\"CS\", \"DataRepresentation\"],\n \"9110\" : [\"SQ\", \"PixelMeasuresSequence\"],\n \"9132\" : [\"SQ\", \"FrameVOILUTSequence\"],\n \"9145\" : [\"SQ\", \"PixelValueTransformationSequence\"],\n \"9235\" : [\"CS\", \"SignalDomainRows\"],\n \"9411\" : [\"FL\", \"DisplayFilterPercentage\"],\n \"9415\" : [\"SQ\", \"FramePixelShiftSequence\"],\n \"9416\" : [\"US\", \"SubtractionItemID\"],\n \"9422\" : [\"SQ\", \"PixelIntensityRelationshipLUTSequence\"],\n \"9443\" : [\"SQ\", \"FramePixelDataPropertiesSequence\"],\n \"9444\" : [\"CS\", \"GeometricalProperties\"],\n \"9445\" : [\"FL\", \"GeometricMaximumDistortion\"],\n \"9446\" : [\"CS\", \"ImageProcessingApplied\"],\n \"9454\" : [\"CS\", \"MaskSelectionMode\"],\n \"9474\" : [\"CS\", \"LUTFunction\"],\n \"9478\" : [\"FL\", \"MaskVisibilityPercentage\"],\n \"9501\" : [\"SQ\", \"PixelShiftSequence\"],\n \"9502\" : [\"SQ\", \"RegionPixelShiftSequence\"],\n \"9503\" : [\"SS\", \"VerticesOfTheRegion\"],\n \"9505\" : [\"SQ\", \"MultiFramePresentationSequence\"],\n \"9506\" : [\"US\", \"PixelShiftFrameRange\"],\n \"9507\" : [\"US\", \"LUTFrameRange\"],\n \"9520\" : [\"DS\", \"ImageToEquipmentMappingMatrix\"],\n \"9537\" : [\"CS\", \"EquipmentCoordinateSystemIdentification\"]\n },\n \"0032\" : {\n \"000A\" : [\"CS\", \"StudyStatusID\"],\n \"000C\" : [\"CS\", \"StudyPriorityID\"],\n \"0012\" : [\"LO\", \"StudyIDIssuer\"],\n \"0032\" : [\"DA\", \"StudyVerifiedDate\"],\n \"0033\" : [\"TM\", \"StudyVerifiedTime\"],\n \"0034\" : [\"DA\", \"StudyReadDate\"],\n \"0035\" : [\"TM\", \"StudyReadTime\"],\n \"1000\" : [\"DA\", \"ScheduledStudyStartDate\"],\n \"1001\" : [\"TM\", \"ScheduledStudyStartTime\"],\n \"1010\" : [\"DA\", \"ScheduledStudyStopDate\"],\n \"1011\" : [\"TM\", \"ScheduledStudyStopTime\"],\n \"1020\" : [\"LO\", \"ScheduledStudyLocation\"],\n \"1021\" : [\"AE\", \"ScheduledStudyLocationAETitle\"],\n \"1030\" : [\"LO\", \"ReasonForStudy\"],\n \"1031\" : [\"SQ\", \"RequestingPhysicianIdentificationSequence\"],\n \"1032\" : [\"PN\", \"RequestingPhysician\"],\n \"1033\" : [\"LO\", \"RequestingService\"],\n \"1034\" : [\"SQ\", \"RequestingServiceCodeSequence\"],\n \"1040\" : [\"DA\", \"StudyArrivalDate\"],\n \"1041\" : [\"TM\", \"StudyArrivalTime\"],\n \"1050\" : [\"DA\", \"StudyCompletionDate\"],\n \"1051\" : [\"TM\", \"StudyCompletionTime\"],\n \"1055\" : [\"CS\", \"StudyComponentStatusID\"],\n \"1060\" : [\"LO\", \"RequestedProcedureDescription\"],\n \"1064\" : [\"SQ\", \"RequestedProcedureCodeSequence\"],\n \"1070\" : [\"LO\", \"RequestedContrastAgent\"],\n \"4000\" : [\"LT\", \"StudyComments\"]\n },\n \"0038\" : {\n \"0004\" : [\"SQ\", \"ReferencedPatientAliasSequence\"],\n \"0008\" : [\"CS\", \"VisitStatusID\"],\n \"0010\" : [\"LO\", \"AdmissionID\"],\n \"0011\" : [\"LO\", \"IssuerOfAdmissionID\"],\n \"0014\" : [\"SQ\", \"IssuerOfAdmissionIDSequence\"],\n \"0016\" : [\"LO\", \"RouteOfAdmissions\"],\n \"001A\" : [\"DA\", \"ScheduledAdmissionDate\"],\n \"001B\" : [\"TM\", \"ScheduledAdmissionTime\"],\n \"001C\" : [\"DA\", \"ScheduledDischargeDate\"],\n \"001D\" : [\"TM\", \"ScheduledDischargeTime\"],\n \"001E\" : [\"LO\", \"ScheduledPatientInstitutionResidence\"],\n \"0020\" : [\"DA\", \"AdmittingDate\"],\n \"0021\" : [\"TM\", \"AdmittingTime\"],\n \"0030\" : [\"DA\", \"DischargeDate\"],\n \"0032\" : [\"TM\", \"DischargeTime\"],\n \"0040\" : [\"LO\", \"DischargeDiagnosisDescription\"],\n \"0044\" : [\"SQ\", \"DischargeDiagnosisCodeSequence\"],\n \"0050\" : [\"LO\", \"SpecialNeeds\"],\n \"0060\" : [\"LO\", \"ServiceEpisodeID\"],\n \"0061\" : [\"LO\", \"IssuerOfServiceEpisodeID\"],\n \"0062\" : [\"LO\", \"ServiceEpisodeDescription\"],\n \"0064\" : [\"SQ\", \"IssuerOfServiceEpisodeIDSequence\"],\n \"0100\" : [\"SQ\", \"PertinentDocumentsSequence\"],\n \"0300\" : [\"LO\", \"CurrentPatientLocation\"],\n \"0400\" : [\"LO\", \"PatientInstitutionResidence\"],\n \"0500\" : [\"LO\", \"PatientState\"],\n \"0502\" : [\"SQ\", \"PatientClinicalTrialParticipationSequence\"],\n \"4000\" : [\"LT\", \"VisitComments\"]\n },\n \"003A\" : {\n \"0004\" : [\"CS\", \"WaveformOriginality\"],\n \"0005\" : [\"US\", \"NumberOfWaveformChannels\"],\n \"0010\" : [\"UL\", \"NumberOfWaveformSamples\"],\n \"001A\" : [\"DS\", \"SamplingFrequency\"],\n \"0020\" : [\"SH\", \"MultiplexGroupLabel\"],\n \"0200\" : [\"SQ\", \"ChannelDefinitionSequence\"],\n \"0202\" : [\"IS\", \"WaveformChannelNumber\"],\n \"0203\" : [\"SH\", \"ChannelLabel\"],\n \"0205\" : [\"CS\", \"ChannelStatus\"],\n \"0208\" : [\"SQ\", \"ChannelSourceSequence\"],\n \"0209\" : [\"SQ\", \"ChannelSourceModifiersSequence\"],\n \"020A\" : [\"SQ\", \"SourceWaveformSequence\"],\n \"020C\" : [\"LO\", \"ChannelDerivationDescription\"],\n \"0210\" : [\"DS\", \"ChannelSensitivity\"],\n \"0211\" : [\"SQ\", \"ChannelSensitivityUnitsSequence\"],\n \"0212\" : [\"DS\", \"ChannelSensitivityCorrectionFactor\"],\n \"0213\" : [\"DS\", \"ChannelBaseline\"],\n \"0214\" : [\"DS\", \"ChannelTimeSkew\"],\n \"0215\" : [\"DS\", \"ChannelSampleSkew\"],\n \"0218\" : [\"DS\", \"ChannelOffset\"],\n \"021A\" : [\"US\", \"WaveformBitsStored\"],\n \"0220\" : [\"DS\", \"FilterLowFrequency\"],\n \"0221\" : [\"DS\", \"FilterHighFrequency\"],\n \"0222\" : [\"DS\", \"NotchFilterFrequency\"],\n \"0223\" : [\"DS\", \"NotchFilterBandwidth\"],\n \"0230\" : [\"FL\", \"WaveformDataDisplayScale\"],\n \"0231\" : [\"US\", \"WaveformDisplayBackgroundCIELabValue\"],\n \"0240\" : [\"SQ\", \"WaveformPresentationGroupSequence\"],\n \"0241\" : [\"US\", \"PresentationGroupNumber\"],\n \"0242\" : [\"SQ\", \"ChannelDisplaySequence\"],\n \"0244\" : [\"US\", \"ChannelRecommendedDisplayCIELabValue\"],\n \"0245\" : [\"FL\", \"ChannelPosition\"],\n \"0246\" : [\"CS\", \"DisplayShadingFlag\"],\n \"0247\" : [\"FL\", \"FractionalChannelDisplayScale\"],\n \"0248\" : [\"FL\", \"AbsoluteChannelDisplayScale\"],\n \"0300\" : [\"SQ\", \"MultiplexedAudioChannelsDescriptionCodeSequence\"],\n \"0301\" : [\"IS\", \"ChannelIdentificationCode\"],\n \"0302\" : [\"CS\", \"ChannelMode\"]\n },\n \"0040\" : {\n \"0001\" : [\"AE\", \"ScheduledStationAETitle\"],\n \"0002\" : [\"DA\", \"ScheduledProcedureStepStartDate\"],\n \"0003\" : [\"TM\", \"ScheduledProcedureStepStartTime\"],\n \"0004\" : [\"DA\", \"ScheduledProcedureStepEndDate\"],\n \"0005\" : [\"TM\", \"ScheduledProcedureStepEndTime\"],\n \"0006\" : [\"PN\", \"ScheduledPerformingPhysicianName\"],\n \"0007\" : [\"LO\", \"ScheduledProcedureStepDescription\"],\n \"0008\" : [\"SQ\", \"ScheduledProtocolCodeSequence\"],\n \"0009\" : [\"SH\", \"ScheduledProcedureStepID\"],\n \"000A\" : [\"SQ\", \"StageCodeSequence\"],\n \"000B\" : [\"SQ\", \"ScheduledPerformingPhysicianIdentificationSequence\"],\n \"0010\" : [\"SH\", \"ScheduledStationName\"],\n \"0011\" : [\"SH\", \"ScheduledProcedureStepLocation\"],\n \"0012\" : [\"LO\", \"PreMedication\"],\n \"0020\" : [\"CS\", \"ScheduledProcedureStepStatus\"],\n \"0026\" : [\"SQ\", \"OrderPlacerIdentifierSequence\"],\n \"0027\" : [\"SQ\", \"OrderFillerIdentifierSequence\"],\n \"0031\" : [\"UT\", \"LocalNamespaceEntityID\"],\n \"0032\" : [\"UT\", \"UniversalEntityID\"],\n \"0033\" : [\"CS\", \"UniversalEntityIDType\"],\n \"0035\" : [\"CS\", \"IdentifierTypeCode\"],\n \"0036\" : [\"SQ\", \"AssigningFacilitySequence\"],\n \"0039\" : [\"SQ\", \"AssigningJurisdictionCodeSequence\"],\n \"003A\" : [\"SQ\", \"AssigningAgencyOrDepartmentCodeSequence\"],\n \"0100\" : [\"SQ\", \"ScheduledProcedureStepSequence\"],\n \"0220\" : [\"SQ\", \"ReferencedNonImageCompositeSOPInstanceSequence\"],\n \"0241\" : [\"AE\", \"PerformedStationAETitle\"],\n \"0242\" : [\"SH\", \"PerformedStationName\"],\n \"0243\" : [\"SH\", \"PerformedLocation\"],\n \"0244\" : [\"DA\", \"PerformedProcedureStepStartDate\"],\n \"0245\" : [\"TM\", \"PerformedProcedureStepStartTime\"],\n \"0250\" : [\"DA\", \"PerformedProcedureStepEndDate\"],\n \"0251\" : [\"TM\", \"PerformedProcedureStepEndTime\"],\n \"0252\" : [\"CS\", \"PerformedProcedureStepStatus\"],\n \"0253\" : [\"SH\", \"PerformedProcedureStepID\"],\n \"0254\" : [\"LO\", \"PerformedProcedureStepDescription\"],\n \"0255\" : [\"LO\", \"PerformedProcedureTypeDescription\"],\n \"0260\" : [\"SQ\", \"PerformedProtocolCodeSequence\"],\n \"0261\" : [\"CS\", \"PerformedProtocolType\"],\n \"0270\" : [\"SQ\", \"ScheduledStepAttributesSequence\"],\n \"0275\" : [\"SQ\", \"RequestAttributesSequence\"],\n \"0280\" : [\"ST\", \"CommentsOnThePerformedProcedureStep\"],\n \"0281\" : [\"SQ\", \"PerformedProcedureStepDiscontinuationReasonCodeSequence\"],\n \"0293\" : [\"SQ\", \"QuantitySequence\"],\n \"0294\" : [\"DS\", \"Quantity\"],\n \"0295\" : [\"SQ\", \"MeasuringUnitsSequence\"],\n \"0296\" : [\"SQ\", \"BillingItemSequence\"],\n \"0300\" : [\"US\", \"TotalTimeOfFluoroscopy\"],\n \"0301\" : [\"US\", \"TotalNumberOfExposures\"],\n \"0302\" : [\"US\", \"EntranceDose\"],\n \"0303\" : [\"US\", \"ExposedArea\"],\n \"0306\" : [\"DS\", \"DistanceSourceToEntrance\"],\n \"0307\" : [\"DS\", \"DistanceSourceToSupport\"],\n \"030E\" : [\"SQ\", \"ExposureDoseSequence\"],\n \"0310\" : [\"ST\", \"CommentsOnRadiationDose\"],\n \"0312\" : [\"DS\", \"XRayOutput\"],\n \"0314\" : [\"DS\", \"HalfValueLayer\"],\n \"0316\" : [\"DS\", \"OrganDose\"],\n \"0318\" : [\"CS\", \"OrganExposed\"],\n \"0320\" : [\"SQ\", \"BillingProcedureStepSequence\"],\n \"0321\" : [\"SQ\", \"FilmConsumptionSequence\"],\n \"0324\" : [\"SQ\", \"BillingSuppliesAndDevicesSequence\"],\n \"0330\" : [\"SQ\", \"ReferencedProcedureStepSequence\"],\n \"0340\" : [\"SQ\", \"PerformedSeriesSequence\"],\n \"0400\" : [\"LT\", \"CommentsOnTheScheduledProcedureStep\"],\n \"0440\" : [\"SQ\", \"ProtocolContextSequence\"],\n \"0441\" : [\"SQ\", \"ContentItemModifierSequence\"],\n \"0500\" : [\"SQ\", \"ScheduledSpecimenSequence\"],\n \"050A\" : [\"LO\", \"SpecimenAccessionNumber\"],\n \"0512\" : [\"LO\", \"ContainerIdentifier\"],\n \"0513\" : [\"SQ\", \"IssuerOfTheContainerIdentifierSequence\"],\n \"0515\" : [\"SQ\", \"AlternateContainerIdentifierSequence\"],\n \"0518\" : [\"SQ\", \"ContainerTypeCodeSequence\"],\n \"051A\" : [\"LO\", \"ContainerDescription\"],\n \"0520\" : [\"SQ\", \"ContainerComponentSequence\"],\n \"0550\" : [\"SQ\", \"SpecimenSequence\"],\n \"0551\" : [\"LO\", \"SpecimenIdentifier\"],\n \"0552\" : [\"SQ\", \"SpecimenDescriptionSequenceTrial\"],\n \"0553\" : [\"ST\", \"SpecimenDescriptionTrial\"],\n \"0554\" : [\"UI\", \"SpecimenUID\"],\n \"0555\" : [\"SQ\", \"AcquisitionContextSequence\"],\n \"0556\" : [\"ST\", \"AcquisitionContextDescription\"],\n \"059A\" : [\"SQ\", \"SpecimenTypeCodeSequence\"],\n \"0560\" : [\"SQ\", \"SpecimenDescriptionSequence\"],\n \"0562\" : [\"SQ\", \"IssuerOfTheSpecimenIdentifierSequence\"],\n \"0600\" : [\"LO\", \"SpecimenShortDescription\"],\n \"0602\" : [\"UT\", \"SpecimenDetailedDescription\"],\n \"0610\" : [\"SQ\", \"SpecimenPreparationSequence\"],\n \"0612\" : [\"SQ\", \"SpecimenPreparationStepContentItemSequence\"],\n \"0620\" : [\"SQ\", \"SpecimenLocalizationContentItemSequence\"],\n \"06FA\" : [\"LO\", \"SlideIdentifier\"],\n \"071A\" : [\"SQ\", \"ImageCenterPointCoordinatesSequence\"],\n \"072A\" : [\"DS\", \"XOffsetInSlideCoordinateSystem\"],\n \"073A\" : [\"DS\", \"YOffsetInSlideCoordinateSystem\"],\n \"074A\" : [\"DS\", \"ZOffsetInSlideCoordinateSystem\"],\n \"08D8\" : [\"SQ\", \"PixelSpacingSequence\"],\n \"08DA\" : [\"SQ\", \"CoordinateSystemAxisCodeSequence\"],\n \"08EA\" : [\"SQ\", \"MeasurementUnitsCodeSequence\"],\n \"09F8\" : [\"SQ\", \"VitalStainCodeSequenceTrial\"],\n \"1001\" : [\"SH\", \"RequestedProcedureID\"],\n \"1002\" : [\"LO\", \"ReasonForTheRequestedProcedure\"],\n \"1003\" : [\"SH\", \"RequestedProcedurePriority\"],\n \"1004\" : [\"LO\", \"PatientTransportArrangements\"],\n \"1005\" : [\"LO\", \"RequestedProcedureLocation\"],\n \"1006\" : [\"SH\", \"PlacerOrderNumberProcedure\"],\n \"1007\" : [\"SH\", \"FillerOrderNumberProcedure\"],\n \"1008\" : [\"LO\", \"ConfidentialityCode\"],\n \"1009\" : [\"SH\", \"ReportingPriority\"],\n \"100A\" : [\"SQ\", \"ReasonForRequestedProcedureCodeSequence\"],\n \"1010\" : [\"PN\", \"NamesOfIntendedRecipientsOfResults\"],\n \"1011\" : [\"SQ\", \"IntendedRecipientsOfResultsIdentificationSequence\"],\n \"1012\" : [\"SQ\", \"ReasonForPerformedProcedureCodeSequence\"],\n \"1060\" : [\"LO\", \"RequestedProcedureDescriptionTrial\"],\n \"1101\" : [\"SQ\", \"PersonIdentificationCodeSequence\"],\n \"1102\" : [\"ST\", \"PersonAddress\"],\n \"1103\" : [\"LO\", \"PersonTelephoneNumbers\"],\n \"1400\" : [\"LT\", \"RequestedProcedureComments\"],\n \"2001\" : [\"LO\", \"ReasonForTheImagingServiceRequest\"],\n \"2004\" : [\"DA\", \"IssueDateOfImagingServiceRequest\"],\n \"2005\" : [\"TM\", \"IssueTimeOfImagingServiceRequest\"],\n \"2006\" : [\"SH\", \"PlacerOrderNumberImagingServiceRequestRetired\"],\n \"2007\" : [\"SH\", \"FillerOrderNumberImagingServiceRequestRetired\"],\n \"2008\" : [\"PN\", \"OrderEnteredBy\"],\n \"2009\" : [\"SH\", \"OrderEntererLocation\"],\n \"2010\" : [\"SH\", \"OrderCallbackPhoneNumber\"],\n \"2016\" : [\"LO\", \"PlacerOrderNumberImagingServiceRequest\"],\n \"2017\" : [\"LO\", \"FillerOrderNumberImagingServiceRequest\"],\n \"2400\" : [\"LT\", \"ImagingServiceRequestComments\"],\n \"3001\" : [\"LO\", \"ConfidentialityConstraintOnPatientDataDescription\"],\n \"4001\" : [\"CS\", \"GeneralPurposeScheduledProcedureStepStatus\"],\n \"4002\" : [\"CS\", \"GeneralPurposePerformedProcedureStepStatus\"],\n \"4003\" : [\"CS\", \"GeneralPurposeScheduledProcedureStepPriority\"],\n \"4004\" : [\"SQ\", \"ScheduledProcessingApplicationsCodeSequence\"],\n \"4005\" : [\"DT\", \"ScheduledProcedureStepStartDateTime\"],\n \"4006\" : [\"CS\", \"MultipleCopiesFlag\"],\n \"4007\" : [\"SQ\", \"PerformedProcessingApplicationsCodeSequence\"],\n \"4009\" : [\"SQ\", \"HumanPerformerCodeSequence\"],\n \"4010\" : [\"DT\", \"ScheduledProcedureStepModificationDateTime\"],\n \"4011\" : [\"DT\", \"ExpectedCompletionDateTime\"],\n \"4015\" : [\"SQ\", \"ResultingGeneralPurposePerformedProcedureStepsSequence\"],\n \"4016\" : [\"SQ\", \"ReferencedGeneralPurposeScheduledProcedureStepSequence\"],\n \"4018\" : [\"SQ\", \"ScheduledWorkitemCodeSequence\"],\n \"4019\" : [\"SQ\", \"PerformedWorkitemCodeSequence\"],\n \"4020\" : [\"CS\", \"InputAvailabilityFlag\"],\n \"4021\" : [\"SQ\", \"InputInformationSequence\"],\n \"4022\" : [\"SQ\", \"RelevantInformationSequence\"],\n \"4023\" : [\"UI\", \"ReferencedGeneralPurposeScheduledProcedureStepTransactionUID\"],\n \"4025\" : [\"SQ\", \"ScheduledStationNameCodeSequence\"],\n \"4026\" : [\"SQ\", \"ScheduledStationClassCodeSequence\"],\n \"4027\" : [\"SQ\", \"ScheduledStationGeographicLocationCodeSequence\"],\n \"4028\" : [\"SQ\", \"PerformedStationNameCodeSequence\"],\n \"4029\" : [\"SQ\", \"PerformedStationClassCodeSequence\"],\n \"4030\" : [\"SQ\", \"PerformedStationGeographicLocationCodeSequence\"],\n \"4031\" : [\"SQ\", \"RequestedSubsequentWorkitemCodeSequence\"],\n \"4032\" : [\"SQ\", \"NonDICOMOutputCodeSequence\"],\n \"4033\" : [\"SQ\", \"OutputInformationSequence\"],\n \"4034\" : [\"SQ\", \"ScheduledHumanPerformersSequence\"],\n \"4035\" : [\"SQ\", \"ActualHumanPerformersSequence\"],\n \"4036\" : [\"LO\", \"HumanPerformerOrganization\"],\n \"4037\" : [\"PN\", \"HumanPerformerName\"],\n \"4040\" : [\"CS\", \"RawDataHandling\"],\n \"4041\" : [\"CS\", \"InputReadinessState\"],\n \"4050\" : [\"DT\", \"PerformedProcedureStepStartDateTime\"],\n \"4051\" : [\"DT\", \"PerformedProcedureStepEndDateTime\"],\n \"4052\" : [\"DT\", \"ProcedureStepCancellationDateTime\"],\n \"8302\" : [\"DS\", \"EntranceDoseInmGy\"],\n \"9094\" : [\"SQ\", \"ReferencedImageRealWorldValueMappingSequence\"],\n \"9096\" : [\"SQ\", \"RealWorldValueMappingSequence\"],\n \"9098\" : [\"SQ\", \"PixelValueMappingCodeSequence\"],\n \"9210\" : [\"SH\", \"LUTLabel\"],\n \"9211\" : [\"SS\", \"RealWorldValueLastValueMapped\"],\n \"9212\" : [\"FD\", \"RealWorldValueLUTData\"],\n \"9216\" : [\"SS\", \"RealWorldValueFirstValueMapped\"],\n \"9224\" : [\"FD\", \"RealWorldValueIntercept\"],\n \"9225\" : [\"FD\", \"RealWorldValueSlope\"],\n \"A007\" : [\"CS\", \"FindingsFlagTrial\"],\n \"A010\" : [\"CS\", \"RelationshipType\"],\n \"A020\" : [\"SQ\", \"FindingsSequenceTrial\"],\n \"A021\" : [\"UI\", \"FindingsGroupUIDTrial\"],\n \"A022\" : [\"UI\", \"ReferencedFindingsGroupUIDTrial\"],\n \"A023\" : [\"DA\", \"FindingsGroupRecordingDateTrial\"],\n \"A024\" : [\"TM\", \"FindingsGroupRecordingTimeTrial\"],\n \"A026\" : [\"SQ\", \"FindingsSourceCategoryCodeSequenceTrial\"],\n \"A027\" : [\"LO\", \"VerifyingOrganization\"],\n \"A028\" : [\"SQ\", \"DocumentingOrganizationIdentifierCodeSequenceTrial\"],\n \"A030\" : [\"DT\", \"VerificationDateTime\"],\n \"A032\" : [\"DT\", \"ObservationDateTime\"],\n \"A040\" : [\"CS\", \"ValueType\"],\n \"A043\" : [\"SQ\", \"ConceptNameCodeSequence\"],\n \"A047\" : [\"LO\", \"MeasurementPrecisionDescriptionTrial\"],\n \"A050\" : [\"CS\", \"ContinuityOfContent\"],\n \"A057\" : [\"CS\", \"UrgencyOrPriorityAlertsTrial\"],\n \"A060\" : [\"LO\", \"SequencingIndicatorTrial\"],\n \"A066\" : [\"SQ\", \"DocumentIdentifierCodeSequenceTrial\"],\n \"A067\" : [\"PN\", \"DocumentAuthorTrial\"],\n \"A068\" : [\"SQ\", \"DocumentAuthorIdentifierCodeSequenceTrial\"],\n \"A070\" : [\"SQ\", \"IdentifierCodeSequenceTrial\"],\n \"A073\" : [\"SQ\", \"VerifyingObserverSequence\"],\n \"A074\" : [\"OB\", \"ObjectBinaryIdentifierTrial\"],\n \"A075\" : [\"PN\", \"VerifyingObserverName\"],\n \"A076\" : [\"SQ\", \"DocumentingObserverIdentifierCodeSequenceTrial\"],\n \"A078\" : [\"SQ\", \"AuthorObserverSequence\"],\n \"A07A\" : [\"SQ\", \"ParticipantSequence\"],\n \"A07C\" : [\"SQ\", \"CustodialOrganizationSequence\"],\n \"A080\" : [\"CS\", \"ParticipationType\"],\n \"A082\" : [\"DT\", \"ParticipationDateTime\"],\n \"A084\" : [\"CS\", \"ObserverType\"],\n \"A085\" : [\"SQ\", \"ProcedureIdentifierCodeSequenceTrial\"],\n \"A088\" : [\"SQ\", \"VerifyingObserverIdentificationCodeSequence\"],\n \"A089\" : [\"OB\", \"ObjectDirectoryBinaryIdentifierTrial\"],\n \"A090\" : [\"SQ\", \"EquivalentCDADocumentSequence\"],\n \"A0B0\" : [\"US\", \"ReferencedWaveformChannels\"],\n \"A110\" : [\"DA\", \"DateOfDocumentOrVerbalTransactionTrial\"],\n \"A112\" : [\"TM\", \"TimeOfDocumentCreationOrVerbalTransactionTrial\"],\n \"A120\" : [\"DT\", \"DateTime\"],\n \"A121\" : [\"DA\", \"Date\"],\n \"A122\" : [\"TM\", \"Time\"],\n \"A123\" : [\"PN\", \"PersonName\"],\n \"A124\" : [\"UI\", \"UID\"],\n \"A125\" : [\"CS\", \"ReportStatusIDTrial\"],\n \"A130\" : [\"CS\", \"TemporalRangeType\"],\n \"A132\" : [\"UL\", \"ReferencedSamplePositions\"],\n \"A136\" : [\"US\", \"ReferencedFrameNumbers\"],\n \"A138\" : [\"DS\", \"ReferencedTimeOffsets\"],\n \"A13A\" : [\"DT\", \"ReferencedDateTime\"],\n \"A160\" : [\"UT\", \"TextValue\"],\n \"A167\" : [\"SQ\", \"ObservationCategoryCodeSequenceTrial\"],\n \"A168\" : [\"SQ\", \"ConceptCodeSequence\"],\n \"A16A\" : [\"ST\", \"BibliographicCitationTrial\"],\n \"A170\" : [\"SQ\", \"PurposeOfReferenceCodeSequence\"],\n \"A171\" : [\"UI\", \"ObservationUIDTrial\"],\n \"A172\" : [\"UI\", \"ReferencedObservationUIDTrial\"],\n \"A173\" : [\"CS\", \"ReferencedObservationClassTrial\"],\n \"A174\" : [\"CS\", \"ReferencedObjectObservationClassTrial\"],\n \"A180\" : [\"US\", \"AnnotationGroupNumber\"],\n \"A192\" : [\"DA\", \"ObservationDateTrial\"],\n \"A193\" : [\"TM\", \"ObservationTimeTrial\"],\n \"A194\" : [\"CS\", \"MeasurementAutomationTrial\"],\n \"A195\" : [\"SQ\", \"ModifierCodeSequence\"],\n \"A224\" : [\"ST\", \"IdentificationDescriptionTrial\"],\n \"A290\" : [\"CS\", \"CoordinatesSetGeometricTypeTrial\"],\n \"A296\" : [\"SQ\", \"AlgorithmCodeSequenceTrial\"],\n \"A297\" : [\"ST\", \"AlgorithmDescriptionTrial\"],\n \"A29A\" : [\"SL\", \"PixelCoordinatesSetTrial\"],\n \"A300\" : [\"SQ\", \"MeasuredValueSequence\"],\n \"A301\" : [\"SQ\", \"NumericValueQualifierCodeSequence\"],\n \"A307\" : [\"PN\", \"CurrentObserverTrial\"],\n \"A30A\" : [\"DS\", \"NumericValue\"],\n \"A313\" : [\"SQ\", \"ReferencedAccessionSequenceTrial\"],\n \"A33A\" : [\"ST\", \"ReportStatusCommentTrial\"],\n \"A340\" : [\"SQ\", \"ProcedureContextSequenceTrial\"],\n \"A352\" : [\"PN\", \"VerbalSourceTrial\"],\n \"A353\" : [\"ST\", \"AddressTrial\"],\n \"A354\" : [\"LO\", \"TelephoneNumberTrial\"],\n \"A358\" : [\"SQ\", \"VerbalSourceIdentifierCodeSequenceTrial\"],\n \"A360\" : [\"SQ\", \"PredecessorDocumentsSequence\"],\n \"A370\" : [\"SQ\", \"ReferencedRequestSequence\"],\n \"A372\" : [\"SQ\", \"PerformedProcedureCodeSequence\"],\n \"A375\" : [\"SQ\", \"CurrentRequestedProcedureEvidenceSequence\"],\n \"A380\" : [\"SQ\", \"ReportDetailSequenceTrial\"],\n \"A385\" : [\"SQ\", \"PertinentOtherEvidenceSequence\"],\n \"A390\" : [\"SQ\", \"HL7StructuredDocumentReferenceSequence\"],\n \"A402\" : [\"UI\", \"ObservationSubjectUIDTrial\"],\n \"A403\" : [\"CS\", \"ObservationSubjectClassTrial\"],\n \"A404\" : [\"SQ\", \"ObservationSubjectTypeCodeSequenceTrial\"],\n \"A491\" : [\"CS\", \"CompletionFlag\"],\n \"A492\" : [\"LO\", \"CompletionFlagDescription\"],\n \"A493\" : [\"CS\", \"VerificationFlag\"],\n \"A494\" : [\"CS\", \"ArchiveRequested\"],\n \"A496\" : [\"CS\", \"PreliminaryFlag\"],\n \"A504\" : [\"SQ\", \"ContentTemplateSequence\"],\n \"A525\" : [\"SQ\", \"IdenticalDocumentsSequence\"],\n \"A600\" : [\"CS\", \"ObservationSubjectContextFlagTrial\"],\n \"A601\" : [\"CS\", \"ObserverContextFlagTrial\"],\n \"A603\" : [\"CS\", \"ProcedureContextFlagTrial\"],\n \"A730\" : [\"SQ\", \"ContentSequence\"],\n \"A731\" : [\"SQ\", \"RelationshipSequenceTrial\"],\n \"A732\" : [\"SQ\", \"RelationshipTypeCodeSequenceTrial\"],\n \"A744\" : [\"SQ\", \"LanguageCodeSequenceTrial\"],\n \"A992\" : [\"ST\", \"UniformResourceLocatorTrial\"],\n \"B020\" : [\"SQ\", \"WaveformAnnotationSequence\"],\n \"DB00\" : [\"CS\", \"TemplateIdentifier\"],\n \"DB06\" : [\"DT\", \"TemplateVersion\"],\n \"DB07\" : [\"DT\", \"TemplateLocalVersion\"],\n \"DB0B\" : [\"CS\", \"TemplateExtensionFlag\"],\n \"DB0C\" : [\"UI\", \"TemplateExtensionOrganizationUID\"],\n \"DB0D\" : [\"UI\", \"TemplateExtensionCreatorUID\"],\n \"DB73\" : [\"UL\", \"ReferencedContentItemIdentifier\"],\n \"E001\" : [\"ST\", \"HL7InstanceIdentifier\"],\n \"E004\" : [\"DT\", \"HL7DocumentEffectiveTime\"],\n \"E006\" : [\"SQ\", \"HL7DocumentTypeCodeSequence\"],\n \"E008\" : [\"SQ\", \"DocumentClassCodeSequence\"],\n \"E010\" : [\"UT\", \"RetrieveURI\"],\n \"E011\" : [\"UI\", \"RetrieveLocationUID\"],\n \"E020\" : [\"CS\", \"TypeOfInstances\"],\n \"E021\" : [\"SQ\", \"DICOMRetrievalSequence\"],\n \"E022\" : [\"SQ\", \"DICOMMediaRetrievalSequence\"],\n \"E023\" : [\"SQ\", \"WADORetrievalSequence\"],\n \"E024\" : [\"SQ\", \"XDSRetrievalSequence\"],\n \"E030\" : [\"UI\", \"RepositoryUniqueID\"],\n \"E031\" : [\"UI\", \"HomeCommunityID\"]\n },\n \"0042\" : {\n \"0010\" : [\"ST\", \"DocumentTitle\"],\n \"0011\" : [\"OB\", \"EncapsulatedDocument\"],\n \"0012\" : [\"LO\", \"MIMETypeOfEncapsulatedDocument\"],\n \"0013\" : [\"SQ\", \"SourceInstanceSequence\"],\n \"0014\" : [\"LO\", \"ListOfMIMETypes\"]\n },\n \"0044\" : {\n \"0001\" : [\"ST\", \"ProductPackageIdentifier\"],\n \"0002\" : [\"CS\", \"SubstanceAdministrationApproval\"],\n \"0003\" : [\"LT\", \"ApprovalStatusFurtherDescription\"],\n \"0004\" : [\"DT\", \"ApprovalStatusDateTime\"],\n \"0007\" : [\"SQ\", \"ProductTypeCodeSequence\"],\n \"0008\" : [\"LO\", \"ProductName\"],\n \"0009\" : [\"LT\", \"ProductDescription\"],\n \"000A\" : [\"LO\", \"ProductLotIdentifier\"],\n \"000B\" : [\"DT\", \"ProductExpirationDateTime\"],\n \"0010\" : [\"DT\", \"SubstanceAdministrationDateTime\"],\n \"0011\" : [\"LO\", \"SubstanceAdministrationNotes\"],\n \"0012\" : [\"LO\", \"SubstanceAdministrationDeviceID\"],\n \"0013\" : [\"SQ\", \"ProductParameterSequence\"],\n \"0019\" : [\"SQ\", \"SubstanceAdministrationParameterSequence\"]\n },\n \"0046\" : {\n \"0012\" : [\"LO\", \"LensDescription\"],\n \"0014\" : [\"SQ\", \"RightLensSequence\"],\n \"0015\" : [\"SQ\", \"LeftLensSequence\"],\n \"0016\" : [\"SQ\", \"UnspecifiedLateralityLensSequence\"],\n \"0018\" : [\"SQ\", \"CylinderSequence\"],\n \"0028\" : [\"SQ\", \"PrismSequence\"],\n \"0030\" : [\"FD\", \"HorizontalPrismPower\"],\n \"0032\" : [\"CS\", \"HorizontalPrismBase\"],\n \"0034\" : [\"FD\", \"VerticalPrismPower\"],\n \"0036\" : [\"CS\", \"VerticalPrismBase\"],\n \"0038\" : [\"CS\", \"LensSegmentType\"],\n \"0040\" : [\"FD\", \"OpticalTransmittance\"],\n \"0042\" : [\"FD\", \"ChannelWidth\"],\n \"0044\" : [\"FD\", \"PupilSize\"],\n \"0046\" : [\"FD\", \"CornealSize\"],\n \"0050\" : [\"SQ\", \"AutorefractionRightEyeSequence\"],\n \"0052\" : [\"SQ\", \"AutorefractionLeftEyeSequence\"],\n \"0060\" : [\"FD\", \"DistancePupillaryDistance\"],\n \"0062\" : [\"FD\", \"NearPupillaryDistance\"],\n \"0063\" : [\"FD\", \"IntermediatePupillaryDistance\"],\n \"0064\" : [\"FD\", \"OtherPupillaryDistance\"],\n \"0070\" : [\"SQ\", \"KeratometryRightEyeSequence\"],\n \"0071\" : [\"SQ\", \"KeratometryLeftEyeSequence\"],\n \"0074\" : [\"SQ\", \"SteepKeratometricAxisSequence\"],\n \"0075\" : [\"FD\", \"RadiusOfCurvature\"],\n \"0076\" : [\"FD\", \"KeratometricPower\"],\n \"0077\" : [\"FD\", \"KeratometricAxis\"],\n \"0080\" : [\"SQ\", \"FlatKeratometricAxisSequence\"],\n \"0092\" : [\"CS\", \"BackgroundColor\"],\n \"0094\" : [\"CS\", \"Optotype\"],\n \"0095\" : [\"CS\", \"OptotypePresentation\"],\n \"0097\" : [\"SQ\", \"SubjectiveRefractionRightEyeSequence\"],\n \"0098\" : [\"SQ\", \"SubjectiveRefractionLeftEyeSequence\"],\n \"0100\" : [\"SQ\", \"AddNearSequence\"],\n \"0101\" : [\"SQ\", \"AddIntermediateSequence\"],\n \"0102\" : [\"SQ\", \"AddOtherSequence\"],\n \"0104\" : [\"FD\", \"AddPower\"],\n \"0106\" : [\"FD\", \"ViewingDistance\"],\n \"0121\" : [\"SQ\", \"VisualAcuityTypeCodeSequence\"],\n \"0122\" : [\"SQ\", \"VisualAcuityRightEyeSequence\"],\n \"0123\" : [\"SQ\", \"VisualAcuityLeftEyeSequence\"],\n \"0124\" : [\"SQ\", \"VisualAcuityBothEyesOpenSequence\"],\n \"0125\" : [\"CS\", \"ViewingDistanceType\"],\n \"0135\" : [\"SS\", \"VisualAcuityModifiers\"],\n \"0137\" : [\"FD\", \"DecimalVisualAcuity\"],\n \"0139\" : [\"LO\", \"OptotypeDetailedDefinition\"],\n \"0145\" : [\"SQ\", \"ReferencedRefractiveMeasurementsSequence\"],\n \"0146\" : [\"FD\", \"SpherePower\"],\n \"0147\" : [\"FD\", \"CylinderPower\"]\n },\n \"0048\" : {\n \"0001\" : [\"FL\", \"ImagedVolumeWidth\"],\n \"0002\" : [\"FL\", \"ImagedVolumeHeight\"],\n \"0003\" : [\"FL\", \"ImagedVolumeDepth\"],\n \"0006\" : [\"UL\", \"TotalPixelMatrixColumns\"],\n \"0007\" : [\"UL\", \"TotalPixelMatrixRows\"],\n \"0008\" : [\"SQ\", \"TotalPixelMatrixOriginSequence\"],\n \"0010\" : [\"CS\", \"SpecimenLabelInImage\"],\n \"0011\" : [\"CS\", \"FocusMethod\"],\n \"0012\" : [\"CS\", \"ExtendedDepthOfField\"],\n \"0013\" : [\"US\", \"NumberOfFocalPlanes\"],\n \"0014\" : [\"FL\", \"DistanceBetweenFocalPlanes\"],\n \"0015\" : [\"US\", \"RecommendedAbsentPixelCIELabValue\"],\n \"0100\" : [\"SQ\", \"IlluminatorTypeCodeSequence\"],\n \"0102\" : [\"DS\", \"ImageOrientationSlide\"],\n \"0105\" : [\"SQ\", \"OpticalPathSequence\"],\n \"0106\" : [\"SH\", \"OpticalPathIdentifier\"],\n \"0107\" : [\"ST\", \"OpticalPathDescription\"],\n \"0108\" : [\"SQ\", \"IlluminationColorCodeSequence\"],\n \"0110\" : [\"SQ\", \"SpecimenReferenceSequence\"],\n \"0111\" : [\"DS\", \"CondenserLensPower\"],\n \"0112\" : [\"DS\", \"ObjectiveLensPower\"],\n \"0113\" : [\"DS\", \"ObjectiveLensNumericalAperture\"],\n \"0120\" : [\"SQ\", \"PaletteColorLookupTableSequence\"],\n \"0200\" : [\"SQ\", \"ReferencedImageNavigationSequence\"],\n \"0201\" : [\"US\", \"TopLeftHandCornerOfLocalizerArea\"],\n \"0202\" : [\"US\", \"BottomRightHandCornerOfLocalizerArea\"],\n \"0207\" : [\"SQ\", \"OpticalPathIdentificationSequence\"],\n \"021A\" : [\"SQ\", \"PlanePositionSlideSequence\"],\n \"021E\" : [\"SL\", \"RowPositionInTotalImagePixelMatrix\"],\n \"021F\" : [\"SL\", \"ColumnPositionInTotalImagePixelMatrix\"],\n \"0301\" : [\"CS\", \"PixelOriginInterpretation\"]\n },\n \"0050\" : {\n \"0004\" : [\"CS\", \"CalibrationImage\"],\n \"0010\" : [\"SQ\", \"DeviceSequence\"],\n \"0012\" : [\"SQ\", \"ContainerComponentTypeCodeSequence\"],\n \"0013\" : [\"FD\", \"ContainerComponentThickness\"],\n \"0014\" : [\"DS\", \"DeviceLength\"],\n \"0015\" : [\"FD\", \"ContainerComponentWidth\"],\n \"0016\" : [\"DS\", \"DeviceDiameter\"],\n \"0017\" : [\"CS\", \"DeviceDiameterUnits\"],\n \"0018\" : [\"DS\", \"DeviceVolume\"],\n \"0019\" : [\"DS\", \"InterMarkerDistance\"],\n \"001A\" : [\"CS\", \"ContainerComponentMaterial\"],\n \"001B\" : [\"LO\", \"ContainerComponentID\"],\n \"001C\" : [\"FD\", \"ContainerComponentLength\"],\n \"001D\" : [\"FD\", \"ContainerComponentDiameter\"],\n \"001E\" : [\"LO\", \"ContainerComponentDescription\"],\n \"0020\" : [\"LO\", \"DeviceDescription\"]\n },\n \"0052\" : {\n \"0001\" : [\"FL\", \"ContrastBolusIngredientPercentByVolume\"],\n \"0002\" : [\"FD\", \"OCTFocalDistance\"],\n \"0003\" : [\"FD\", \"BeamSpotSize\"],\n \"0004\" : [\"FD\", \"EffectiveRefractiveIndex\"],\n \"0006\" : [\"CS\", \"OCTAcquisitionDomain\"],\n \"0007\" : [\"FD\", \"OCTOpticalCenterWavelength\"],\n \"0008\" : [\"FD\", \"AxialResolution\"],\n \"0009\" : [\"FD\", \"RangingDepth\"],\n \"0011\" : [\"FD\", \"ALineRate\"],\n \"0012\" : [\"US\", \"ALinesPerFrame\"],\n \"0013\" : [\"FD\", \"CatheterRotationalRate\"],\n \"0014\" : [\"FD\", \"ALinePixelSpacing\"],\n \"0016\" : [\"SQ\", \"ModeOfPercutaneousAccessSequence\"],\n \"0025\" : [\"SQ\", \"IntravascularOCTFrameTypeSequence\"],\n \"0026\" : [\"CS\", \"OCTZOffsetApplied\"],\n \"0027\" : [\"SQ\", \"IntravascularFrameContentSequence\"],\n \"0028\" : [\"FD\", \"IntravascularLongitudinalDistance\"],\n \"0029\" : [\"SQ\", \"IntravascularOCTFrameContentSequence\"],\n \"0030\" : [\"SS\", \"OCTZOffsetCorrection\"],\n \"0031\" : [\"CS\", \"CatheterDirectionOfRotation\"],\n \"0033\" : [\"FD\", \"SeamLineLocation\"],\n \"0034\" : [\"FD\", \"FirstALineLocation\"],\n \"0036\" : [\"US\", \"SeamLineIndex\"],\n \"0038\" : [\"US\", \"NumberOfPaddedAlines\"],\n \"0039\" : [\"CS\", \"InterpolationType\"],\n \"003A\" : [\"CS\", \"RefractiveIndexApplied\"]\n },\n \"0054\" : {\n \"0010\" : [\"US\", \"EnergyWindowVector\"],\n \"0011\" : [\"US\", \"NumberOfEnergyWindows\"],\n \"0012\" : [\"SQ\", \"EnergyWindowInformationSequence\"],\n \"0013\" : [\"SQ\", \"EnergyWindowRangeSequence\"],\n \"0014\" : [\"DS\", \"EnergyWindowLowerLimit\"],\n \"0015\" : [\"DS\", \"EnergyWindowUpperLimit\"],\n \"0016\" : [\"SQ\", \"RadiopharmaceuticalInformationSequence\"],\n \"0017\" : [\"IS\", \"ResidualSyringeCounts\"],\n \"0018\" : [\"SH\", \"EnergyWindowName\"],\n \"0020\" : [\"US\", \"DetectorVector\"],\n \"0021\" : [\"US\", \"NumberOfDetectors\"],\n \"0022\" : [\"SQ\", \"DetectorInformationSequence\"],\n \"0030\" : [\"US\", \"PhaseVector\"],\n \"0031\" : [\"US\", \"NumberOfPhases\"],\n \"0032\" : [\"SQ\", \"PhaseInformationSequence\"],\n \"0033\" : [\"US\", \"NumberOfFramesInPhase\"],\n \"0036\" : [\"IS\", \"PhaseDelay\"],\n \"0038\" : [\"IS\", \"PauseBetweenFrames\"],\n \"0039\" : [\"CS\", \"PhaseDescription\"],\n \"0050\" : [\"US\", \"RotationVector\"],\n \"0051\" : [\"US\", \"NumberOfRotations\"],\n \"0052\" : [\"SQ\", \"RotationInformationSequence\"],\n \"0053\" : [\"US\", \"NumberOfFramesInRotation\"],\n \"0060\" : [\"US\", \"RRIntervalVector\"],\n \"0061\" : [\"US\", \"NumberOfRRIntervals\"],\n \"0062\" : [\"SQ\", \"GatedInformationSequence\"],\n \"0063\" : [\"SQ\", \"DataInformationSequence\"],\n \"0070\" : [\"US\", \"TimeSlotVector\"],\n \"0071\" : [\"US\", \"NumberOfTimeSlots\"],\n \"0072\" : [\"SQ\", \"TimeSlotInformationSequence\"],\n \"0073\" : [\"DS\", \"TimeSlotTime\"],\n \"0080\" : [\"US\", \"SliceVector\"],\n \"0081\" : [\"US\", \"NumberOfSlices\"],\n \"0090\" : [\"US\", \"AngularViewVector\"],\n \"0100\" : [\"US\", \"TimeSliceVector\"],\n \"0101\" : [\"US\", \"NumberOfTimeSlices\"],\n \"0200\" : [\"DS\", \"StartAngle\"],\n \"0202\" : [\"CS\", \"TypeOfDetectorMotion\"],\n \"0210\" : [\"IS\", \"TriggerVector\"],\n \"0211\" : [\"US\", \"NumberOfTriggersInPhase\"],\n \"0220\" : [\"SQ\", \"ViewCodeSequence\"],\n \"0222\" : [\"SQ\", \"ViewModifierCodeSequence\"],\n \"0300\" : [\"SQ\", \"RadionuclideCodeSequence\"],\n \"0302\" : [\"SQ\", \"AdministrationRouteCodeSequence\"],\n \"0304\" : [\"SQ\", \"RadiopharmaceuticalCodeSequence\"],\n \"0306\" : [\"SQ\", \"CalibrationDataSequence\"],\n \"0308\" : [\"US\", \"EnergyWindowNumber\"],\n \"0400\" : [\"SH\", \"ImageID\"],\n \"0410\" : [\"SQ\", \"PatientOrientationCodeSequence\"],\n \"0412\" : [\"SQ\", \"PatientOrientationModifierCodeSequence\"],\n \"0414\" : [\"SQ\", \"PatientGantryRelationshipCodeSequence\"],\n \"0500\" : [\"CS\", \"SliceProgressionDirection\"],\n \"1000\" : [\"CS\", \"SeriesType\"],\n \"1001\" : [\"CS\", \"Units\"],\n \"1002\" : [\"CS\", \"CountsSource\"],\n \"1004\" : [\"CS\", \"ReprojectionMethod\"],\n \"1006\" : [\"CS\", \"SUVType\"],\n \"1100\" : [\"CS\", \"RandomsCorrectionMethod\"],\n \"1101\" : [\"LO\", \"AttenuationCorrectionMethod\"],\n \"1102\" : [\"CS\", \"DecayCorrection\"],\n \"1103\" : [\"LO\", \"ReconstructionMethod\"],\n \"1104\" : [\"LO\", \"DetectorLinesOfResponseUsed\"],\n \"1105\" : [\"LO\", \"ScatterCorrectionMethod\"],\n \"1200\" : [\"DS\", \"AxialAcceptance\"],\n \"1201\" : [\"IS\", \"AxialMash\"],\n \"1202\" : [\"IS\", \"TransverseMash\"],\n \"1203\" : [\"DS\", \"DetectorElementSize\"],\n \"1210\" : [\"DS\", \"CoincidenceWindowWidth\"],\n \"1220\" : [\"CS\", \"SecondaryCountsType\"],\n \"1300\" : [\"DS\", \"FrameReferenceTime\"],\n \"1310\" : [\"IS\", \"PrimaryPromptsCountsAccumulated\"],\n \"1311\" : [\"IS\", \"SecondaryCountsAccumulated\"],\n \"1320\" : [\"DS\", \"SliceSensitivityFactor\"],\n \"1321\" : [\"DS\", \"DecayFactor\"],\n \"1322\" : [\"DS\", \"DoseCalibrationFactor\"],\n \"1323\" : [\"DS\", \"ScatterFractionFactor\"],\n \"1324\" : [\"DS\", \"DeadTimeFactor\"],\n \"1330\" : [\"US\", \"ImageIndex\"],\n \"1400\" : [\"CS\", \"CountsIncluded\"],\n \"1401\" : [\"CS\", \"DeadTimeCorrectionFlag\"]\n },\n \"0060\" : {\n \"3000\" : [\"SQ\", \"HistogramSequence\"],\n \"3002\" : [\"US\", \"HistogramNumberOfBins\"],\n \"3004\" : [\"SS\", \"HistogramFirstBinValue\"],\n \"3006\" : [\"SS\", \"HistogramLastBinValue\"],\n \"3008\" : [\"US\", \"HistogramBinWidth\"],\n \"3010\" : [\"LO\", \"HistogramExplanation\"],\n \"3020\" : [\"UL\", \"HistogramData\"]\n },\n \"0062\" : {\n \"0001\" : [\"CS\", \"SegmentationType\"],\n \"0002\" : [\"SQ\", \"SegmentSequence\"],\n \"0003\" : [\"SQ\", \"SegmentedPropertyCategoryCodeSequence\"],\n \"0004\" : [\"US\", \"SegmentNumber\"],\n \"0005\" : [\"LO\", \"SegmentLabel\"],\n \"0006\" : [\"ST\", \"SegmentDescription\"],\n \"0008\" : [\"CS\", \"SegmentAlgorithmType\"],\n \"0009\" : [\"LO\", \"SegmentAlgorithmName\"],\n \"000A\" : [\"SQ\", \"SegmentIdentificationSequence\"],\n \"000B\" : [\"US\", \"ReferencedSegmentNumber\"],\n \"000C\" : [\"US\", \"RecommendedDisplayGrayscaleValue\"],\n \"000D\" : [\"US\", \"RecommendedDisplayCIELabValue\"],\n \"000E\" : [\"US\", \"MaximumFractionalValue\"],\n \"000F\" : [\"SQ\", \"SegmentedPropertyTypeCodeSequence\"],\n \"0010\" : [\"CS\", \"SegmentationFractionalType\"]\n },\n \"0064\" : {\n \"0002\" : [\"SQ\", \"DeformableRegistrationSequence\"],\n \"0003\" : [\"UI\", \"SourceFrameOfReferenceUID\"],\n \"0005\" : [\"SQ\", \"DeformableRegistrationGridSequence\"],\n \"0007\" : [\"UL\", \"GridDimensions\"],\n \"0008\" : [\"FD\", \"GridResolution\"],\n \"0009\" : [\"OF\", \"VectorGridData\"],\n \"000F\" : [\"SQ\", \"PreDeformationMatrixRegistrationSequence\"],\n \"0010\" : [\"SQ\", \"PostDeformationMatrixRegistrationSequence\"]\n },\n \"0066\" : {\n \"0001\" : [\"UL\", \"NumberOfSurfaces\"],\n \"0002\" : [\"SQ\", \"SurfaceSequence\"],\n \"0003\" : [\"UL\", \"SurfaceNumber\"],\n \"0004\" : [\"LT\", \"SurfaceComments\"],\n \"0009\" : [\"CS\", \"SurfaceProcessing\"],\n \"000A\" : [\"FL\", \"SurfaceProcessingRatio\"],\n \"000B\" : [\"LO\", \"SurfaceProcessingDescription\"],\n \"000C\" : [\"FL\", \"RecommendedPresentationOpacity\"],\n \"000D\" : [\"CS\", \"RecommendedPresentationType\"],\n \"000E\" : [\"CS\", \"FiniteVolume\"],\n \"0010\" : [\"CS\", \"Manifold\"],\n \"0011\" : [\"SQ\", \"SurfacePointsSequence\"],\n \"0012\" : [\"SQ\", \"SurfacePointsNormalsSequence\"],\n \"0013\" : [\"SQ\", \"SurfaceMeshPrimitivesSequence\"],\n \"0015\" : [\"UL\", \"NumberOfSurfacePoints\"],\n \"0016\" : [\"OF\", \"PointCoordinatesData\"],\n \"0017\" : [\"FL\", \"PointPositionAccuracy\"],\n \"0018\" : [\"FL\", \"MeanPointDistance\"],\n \"0019\" : [\"FL\", \"MaximumPointDistance\"],\n \"001A\" : [\"FL\", \"PointsBoundingBoxCoordinates\"],\n \"001B\" : [\"FL\", \"AxisOfRotation\"],\n \"001C\" : [\"FL\", \"CenterOfRotation\"],\n \"001E\" : [\"UL\", \"NumberOfVectors\"],\n \"001F\" : [\"US\", \"VectorDimensionality\"],\n \"0020\" : [\"FL\", \"VectorAccuracy\"],\n \"0021\" : [\"OF\", \"VectorCoordinateData\"],\n \"0023\" : [\"OW\", \"TrianglePointIndexList\"],\n \"0024\" : [\"OW\", \"EdgePointIndexList\"],\n \"0025\" : [\"OW\", \"VertexPointIndexList\"],\n \"0026\" : [\"SQ\", \"TriangleStripSequence\"],\n \"0027\" : [\"SQ\", \"TriangleFanSequence\"],\n \"0028\" : [\"SQ\", \"LineSequence\"],\n \"0029\" : [\"OW\", \"PrimitivePointIndexList\"],\n \"002A\" : [\"UL\", \"SurfaceCount\"],\n \"002B\" : [\"SQ\", \"ReferencedSurfaceSequence\"],\n \"002C\" : [\"UL\", \"ReferencedSurfaceNumber\"],\n \"002D\" : [\"SQ\", \"SegmentSurfaceGenerationAlgorithmIdentificationSequence\"],\n \"002E\" : [\"SQ\", \"SegmentSurfaceSourceInstanceSequence\"],\n \"002F\" : [\"SQ\", \"AlgorithmFamilyCodeSequence\"],\n \"0030\" : [\"SQ\", \"AlgorithmNameCodeSequence\"],\n \"0031\" : [\"LO\", \"AlgorithmVersion\"],\n \"0032\" : [\"LT\", \"AlgorithmParameters\"],\n \"0034\" : [\"SQ\", \"FacetSequence\"],\n \"0035\" : [\"SQ\", \"SurfaceProcessingAlgorithmIdentificationSequence\"],\n \"0036\" : [\"LO\", \"AlgorithmName\"]\n },\n \"0068\" : {\n \"6210\" : [\"LO\", \"ImplantSize\"],\n \"6221\" : [\"LO\", \"ImplantTemplateVersion\"],\n \"6222\" : [\"SQ\", \"ReplacedImplantTemplateSequence\"],\n \"6223\" : [\"CS\", \"ImplantType\"],\n \"6224\" : [\"SQ\", \"DerivationImplantTemplateSequence\"],\n \"6225\" : [\"SQ\", \"OriginalImplantTemplateSequence\"],\n \"6226\" : [\"DT\", \"EffectiveDateTime\"],\n \"6230\" : [\"SQ\", \"ImplantTargetAnatomySequence\"],\n \"6260\" : [\"SQ\", \"InformationFromManufacturerSequence\"],\n \"6265\" : [\"SQ\", \"NotificationFromManufacturerSequence\"],\n \"6270\" : [\"DT\", \"InformationIssueDateTime\"],\n \"6280\" : [\"ST\", \"InformationSummary\"],\n \"62A0\" : [\"SQ\", \"ImplantRegulatoryDisapprovalCodeSequence\"],\n \"62A5\" : [\"FD\", \"OverallTemplateSpatialTolerance\"],\n \"62C0\" : [\"SQ\", \"HPGLDocumentSequence\"],\n \"62D0\" : [\"US\", \"HPGLDocumentID\"],\n \"62D5\" : [\"LO\", \"HPGLDocumentLabel\"],\n \"62E0\" : [\"SQ\", \"ViewOrientationCodeSequence\"],\n \"62F0\" : [\"FD\", \"ViewOrientationModifier\"],\n \"62F2\" : [\"FD\", \"HPGLDocumentScaling\"],\n \"6300\" : [\"OB\", \"HPGLDocument\"],\n \"6310\" : [\"US\", \"HPGLContourPenNumber\"],\n \"6320\" : [\"SQ\", \"HPGLPenSequence\"],\n \"6330\" : [\"US\", \"HPGLPenNumber\"],\n \"6340\" : [\"LO\", \"HPGLPenLabel\"],\n \"6345\" : [\"ST\", \"HPGLPenDescription\"],\n \"6346\" : [\"FD\", \"RecommendedRotationPoint\"],\n \"6347\" : [\"FD\", \"BoundingRectangle\"],\n \"6350\" : [\"US\", \"ImplantTemplate3DModelSurfaceNumber\"],\n \"6360\" : [\"SQ\", \"SurfaceModelDescriptionSequence\"],\n \"6380\" : [\"LO\", \"SurfaceModelLabel\"],\n \"6390\" : [\"FD\", \"SurfaceModelScalingFactor\"],\n \"63A0\" : [\"SQ\", \"MaterialsCodeSequence\"],\n \"63A4\" : [\"SQ\", \"CoatingMaterialsCodeSequence\"],\n \"63A8\" : [\"SQ\", \"ImplantTypeCodeSequence\"],\n \"63AC\" : [\"SQ\", \"FixationMethodCodeSequence\"],\n \"63B0\" : [\"SQ\", \"MatingFeatureSetsSequence\"],\n \"63C0\" : [\"US\", \"MatingFeatureSetID\"],\n \"63D0\" : [\"LO\", \"MatingFeatureSetLabel\"],\n \"63E0\" : [\"SQ\", \"MatingFeatureSequence\"],\n \"63F0\" : [\"US\", \"MatingFeatureID\"],\n \"6400\" : [\"SQ\", \"MatingFeatureDegreeOfFreedomSequence\"],\n \"6410\" : [\"US\", \"DegreeOfFreedomID\"],\n \"6420\" : [\"CS\", \"DegreeOfFreedomType\"],\n \"6430\" : [\"SQ\", \"TwoDMatingFeatureCoordinatesSequence\"],\n \"6440\" : [\"US\", \"ReferencedHPGLDocumentID\"],\n \"6450\" : [\"FD\", \"TwoDMatingPoint\"],\n \"6460\" : [\"FD\", \"TwoDMatingAxes\"],\n \"6470\" : [\"SQ\", \"TwoDDegreeOfFreedomSequence\"],\n \"6490\" : [\"FD\", \"ThreeDDegreeOfFreedomAxis\"],\n \"64A0\" : [\"FD\", \"RangeOfFreedom\"],\n \"64C0\" : [\"FD\", \"ThreeDMatingPoint\"],\n \"64D0\" : [\"FD\", \"ThreeDMatingAxes\"],\n \"64F0\" : [\"FD\", \"TwoDDegreeOfFreedomAxis\"],\n \"6500\" : [\"SQ\", \"PlanningLandmarkPointSequence\"],\n \"6510\" : [\"SQ\", \"PlanningLandmarkLineSequence\"],\n \"6520\" : [\"SQ\", \"PlanningLandmarkPlaneSequence\"],\n \"6530\" : [\"US\", \"PlanningLandmarkID\"],\n \"6540\" : [\"LO\", \"PlanningLandmarkDescription\"],\n \"6545\" : [\"SQ\", \"PlanningLandmarkIdentificationCodeSequence\"],\n \"6550\" : [\"SQ\", \"TwoDPointCoordinatesSequence\"],\n \"6560\" : [\"FD\", \"TwoDPointCoordinates\"],\n \"6590\" : [\"FD\", \"ThreeDPointCoordinates\"],\n \"65A0\" : [\"SQ\", \"TwoDLineCoordinatesSequence\"],\n \"65B0\" : [\"FD\", \"TwoDLineCoordinates\"],\n \"65D0\" : [\"FD\", \"ThreeDLineCoordinates\"],\n \"65E0\" : [\"SQ\", \"TwoDPlaneCoordinatesSequence\"],\n \"65F0\" : [\"FD\", \"TwoDPlaneIntersection\"],\n \"6610\" : [\"FD\", \"ThreeDPlaneOrigin\"],\n \"6620\" : [\"FD\", \"ThreeDPlaneNormal\"]\n },\n \"0070\" : {\n \"0001\" : [\"SQ\", \"GraphicAnnotationSequence\"],\n \"0002\" : [\"CS\", \"GraphicLayer\"],\n \"0003\" : [\"CS\", \"BoundingBoxAnnotationUnits\"],\n \"0004\" : [\"CS\", \"AnchorPointAnnotationUnits\"],\n \"0005\" : [\"CS\", \"GraphicAnnotationUnits\"],\n \"0006\" : [\"ST\", \"UnformattedTextValue\"],\n \"0008\" : [\"SQ\", \"TextObjectSequence\"],\n \"0009\" : [\"SQ\", \"GraphicObjectSequence\"],\n \"0010\" : [\"FL\", \"BoundingBoxTopLeftHandCorner\"],\n \"0011\" : [\"FL\", \"BoundingBoxBottomRightHandCorner\"],\n \"0012\" : [\"CS\", \"BoundingBoxTextHorizontalJustification\"],\n \"0014\" : [\"FL\", \"AnchorPoint\"],\n \"0015\" : [\"CS\", \"AnchorPointVisibility\"],\n \"0020\" : [\"US\", \"GraphicDimensions\"],\n \"0021\" : [\"US\", \"NumberOfGraphicPoints\"],\n \"0022\" : [\"FL\", \"GraphicData\"],\n \"0023\" : [\"CS\", \"GraphicType\"],\n \"0024\" : [\"CS\", \"GraphicFilled\"],\n \"0040\" : [\"IS\", \"ImageRotationRetired\"],\n \"0041\" : [\"CS\", \"ImageHorizontalFlip\"],\n \"0042\" : [\"US\", \"ImageRotation\"],\n \"0050\" : [\"US\", \"DisplayedAreaTopLeftHandCornerTrial\"],\n \"0051\" : [\"US\", \"DisplayedAreaBottomRightHandCornerTrial\"],\n \"0052\" : [\"SL\", \"DisplayedAreaTopLeftHandCorner\"],\n \"0053\" : [\"SL\", \"DisplayedAreaBottomRightHandCorner\"],\n \"005A\" : [\"SQ\", \"DisplayedAreaSelectionSequence\"],\n \"0060\" : [\"SQ\", \"GraphicLayerSequence\"],\n \"0062\" : [\"IS\", \"GraphicLayerOrder\"],\n \"0066\" : [\"US\", \"GraphicLayerRecommendedDisplayGrayscaleValue\"],\n \"0067\" : [\"US\", \"GraphicLayerRecommendedDisplayRGBValue\"],\n \"0068\" : [\"LO\", \"GraphicLayerDescription\"],\n \"0080\" : [\"CS\", \"ContentLabel\"],\n \"0081\" : [\"LO\", \"ContentDescription\"],\n \"0082\" : [\"DA\", \"PresentationCreationDate\"],\n \"0083\" : [\"TM\", \"PresentationCreationTime\"],\n \"0084\" : [\"PN\", \"ContentCreatorName\"],\n \"0086\" : [\"SQ\", \"ContentCreatorIdentificationCodeSequence\"],\n \"0087\" : [\"SQ\", \"AlternateContentDescriptionSequence\"],\n \"0100\" : [\"CS\", \"PresentationSizeMode\"],\n \"0101\" : [\"DS\", \"PresentationPixelSpacing\"],\n \"0102\" : [\"IS\", \"PresentationPixelAspectRatio\"],\n \"0103\" : [\"FL\", \"PresentationPixelMagnificationRatio\"],\n \"0207\" : [\"LO\", \"GraphicGroupLabel\"],\n \"0208\" : [\"ST\", \"GraphicGroupDescription\"],\n \"0209\" : [\"SQ\", \"CompoundGraphicSequence\"],\n \"0226\" : [\"UL\", \"CompoundGraphicInstanceID\"],\n \"0227\" : [\"LO\", \"FontName\"],\n \"0228\" : [\"CS\", \"FontNameType\"],\n \"0229\" : [\"LO\", \"CSSFontName\"],\n \"0230\" : [\"FD\", \"RotationAngle\"],\n \"0231\" : [\"SQ\", \"TextStyleSequence\"],\n \"0232\" : [\"SQ\", \"LineStyleSequence\"],\n \"0233\" : [\"SQ\", \"FillStyleSequence\"],\n \"0234\" : [\"SQ\", \"GraphicGroupSequence\"],\n \"0241\" : [\"US\", \"TextColorCIELabValue\"],\n \"0242\" : [\"CS\", \"HorizontalAlignment\"],\n \"0243\" : [\"CS\", \"VerticalAlignment\"],\n \"0244\" : [\"CS\", \"ShadowStyle\"],\n \"0245\" : [\"FL\", \"ShadowOffsetX\"],\n \"0246\" : [\"FL\", \"ShadowOffsetY\"],\n \"0247\" : [\"US\", \"ShadowColorCIELabValue\"],\n \"0248\" : [\"CS\", \"Underlined\"],\n \"0249\" : [\"CS\", \"Bold\"],\n \"0250\" : [\"CS\", \"Italic\"],\n \"0251\" : [\"US\", \"PatternOnColorCIELabValue\"],\n \"0252\" : [\"US\", \"PatternOffColorCIELabValue\"],\n \"0253\" : [\"FL\", \"LineThickness\"],\n \"0254\" : [\"CS\", \"LineDashingStyle\"],\n \"0255\" : [\"UL\", \"LinePattern\"],\n \"0256\" : [\"OB\", \"FillPattern\"],\n \"0257\" : [\"CS\", \"FillMode\"],\n \"0258\" : [\"FL\", \"ShadowOpacity\"],\n \"0261\" : [\"FL\", \"GapLength\"],\n \"0262\" : [\"FL\", \"DiameterOfVisibility\"],\n \"0273\" : [\"FL\", \"RotationPoint\"],\n \"0274\" : [\"CS\", \"TickAlignment\"],\n \"0278\" : [\"CS\", \"ShowTickLabel\"],\n \"0279\" : [\"CS\", \"TickLabelAlignment\"],\n \"0282\" : [\"CS\", \"CompoundGraphicUnits\"],\n \"0284\" : [\"FL\", \"PatternOnOpacity\"],\n \"0285\" : [\"FL\", \"PatternOffOpacity\"],\n \"0287\" : [\"SQ\", \"MajorTicksSequence\"],\n \"0288\" : [\"FL\", \"TickPosition\"],\n \"0289\" : [\"SH\", \"TickLabel\"],\n \"0294\" : [\"CS\", \"CompoundGraphicType\"],\n \"0295\" : [\"UL\", \"GraphicGroupID\"],\n \"0306\" : [\"CS\", \"ShapeType\"],\n \"0308\" : [\"SQ\", \"RegistrationSequence\"],\n \"0309\" : [\"SQ\", \"MatrixRegistrationSequence\"],\n \"030A\" : [\"SQ\", \"MatrixSequence\"],\n \"030C\" : [\"CS\", \"FrameOfReferenceTransformationMatrixType\"],\n \"030D\" : [\"SQ\", \"RegistrationTypeCodeSequence\"],\n \"030F\" : [\"ST\", \"FiducialDescription\"],\n \"0310\" : [\"SH\", \"FiducialIdentifier\"],\n \"0311\" : [\"SQ\", \"FiducialIdentifierCodeSequence\"],\n \"0312\" : [\"FD\", \"ContourUncertaintyRadius\"],\n \"0314\" : [\"SQ\", \"UsedFiducialsSequence\"],\n \"0318\" : [\"SQ\", \"GraphicCoordinatesDataSequence\"],\n \"031A\" : [\"UI\", \"FiducialUID\"],\n \"031C\" : [\"SQ\", \"FiducialSetSequence\"],\n \"031E\" : [\"SQ\", \"FiducialSequence\"],\n \"0401\" : [\"US\", \"GraphicLayerRecommendedDisplayCIELabValue\"],\n \"0402\" : [\"SQ\", \"BlendingSequence\"],\n \"0403\" : [\"FL\", \"RelativeOpacity\"],\n \"0404\" : [\"SQ\", \"ReferencedSpatialRegistrationSequence\"],\n \"0405\" : [\"CS\", \"BlendingPosition\"]\n },\n \"0072\" : {\n \"0002\" : [\"SH\", \"HangingProtocolName\"],\n \"0004\" : [\"LO\", \"HangingProtocolDescription\"],\n \"0006\" : [\"CS\", \"HangingProtocolLevel\"],\n \"0008\" : [\"LO\", \"HangingProtocolCreator\"],\n \"000A\" : [\"DT\", \"HangingProtocolCreationDateTime\"],\n \"000C\" : [\"SQ\", \"HangingProtocolDefinitionSequence\"],\n \"000E\" : [\"SQ\", \"HangingProtocolUserIdentificationCodeSequence\"],\n \"0010\" : [\"LO\", \"HangingProtocolUserGroupName\"],\n \"0012\" : [\"SQ\", \"SourceHangingProtocolSequence\"],\n \"0014\" : [\"US\", \"NumberOfPriorsReferenced\"],\n \"0020\" : [\"SQ\", \"ImageSetsSequence\"],\n \"0022\" : [\"SQ\", \"ImageSetSelectorSequence\"],\n \"0024\" : [\"CS\", \"ImageSetSelectorUsageFlag\"],\n \"0026\" : [\"AT\", \"SelectorAttribute\"],\n \"0028\" : [\"US\", \"SelectorValueNumber\"],\n \"0030\" : [\"SQ\", \"TimeBasedImageSetsSequence\"],\n \"0032\" : [\"US\", \"ImageSetNumber\"],\n \"0034\" : [\"CS\", \"ImageSetSelectorCategory\"],\n \"0038\" : [\"US\", \"RelativeTime\"],\n \"003A\" : [\"CS\", \"RelativeTimeUnits\"],\n \"003C\" : [\"SS\", \"AbstractPriorValue\"],\n \"003E\" : [\"SQ\", \"AbstractPriorCodeSequence\"],\n \"0040\" : [\"LO\", \"ImageSetLabel\"],\n \"0050\" : [\"CS\", \"SelectorAttributeVR\"],\n \"0052\" : [\"AT\", \"SelectorSequencePointer\"],\n \"0054\" : [\"LO\", \"SelectorSequencePointerPrivateCreator\"],\n \"0056\" : [\"LO\", \"SelectorAttributePrivateCreator\"],\n \"0060\" : [\"AT\", \"SelectorATValue\"],\n \"0062\" : [\"CS\", \"SelectorCSValue\"],\n \"0064\" : [\"IS\", \"SelectorISValue\"],\n \"0066\" : [\"LO\", \"SelectorLOValue\"],\n \"0068\" : [\"LT\", \"SelectorLTValue\"],\n \"006A\" : [\"PN\", \"SelectorPNValue\"],\n \"006C\" : [\"SH\", \"SelectorSHValue\"],\n \"006E\" : [\"ST\", \"SelectorSTValue\"],\n \"0070\" : [\"UT\", \"SelectorUTValue\"],\n \"0072\" : [\"DS\", \"SelectorDSValue\"],\n \"0074\" : [\"FD\", \"SelectorFDValue\"],\n \"0076\" : [\"FL\", \"SelectorFLValue\"],\n \"0078\" : [\"UL\", \"SelectorULValue\"],\n \"007A\" : [\"US\", \"SelectorUSValue\"],\n \"007C\" : [\"SL\", \"SelectorSLValue\"],\n \"007E\" : [\"SS\", \"SelectorSSValue\"],\n \"0080\" : [\"SQ\", \"SelectorCodeSequenceValue\"],\n \"0100\" : [\"US\", \"NumberOfScreens\"],\n \"0102\" : [\"SQ\", \"NominalScreenDefinitionSequence\"],\n \"0104\" : [\"US\", \"NumberOfVerticalPixels\"],\n \"0106\" : [\"US\", \"NumberOfHorizontalPixels\"],\n \"0108\" : [\"FD\", \"DisplayEnvironmentSpatialPosition\"],\n \"010A\" : [\"US\", \"ScreenMinimumGrayscaleBitDepth\"],\n \"010C\" : [\"US\", \"ScreenMinimumColorBitDepth\"],\n \"010E\" : [\"US\", \"ApplicationMaximumRepaintTime\"],\n \"0200\" : [\"SQ\", \"DisplaySetsSequence\"],\n \"0202\" : [\"US\", \"DisplaySetNumber\"],\n \"0203\" : [\"LO\", \"DisplaySetLabel\"],\n \"0204\" : [\"US\", \"DisplaySetPresentationGroup\"],\n \"0206\" : [\"LO\", \"DisplaySetPresentationGroupDescription\"],\n \"0208\" : [\"CS\", \"PartialDataDisplayHandling\"],\n \"0210\" : [\"SQ\", \"SynchronizedScrollingSequence\"],\n \"0212\" : [\"US\", \"DisplaySetScrollingGroup\"],\n \"0214\" : [\"SQ\", \"NavigationIndicatorSequence\"],\n \"0216\" : [\"US\", \"NavigationDisplaySet\"],\n \"0218\" : [\"US\", \"ReferenceDisplaySets\"],\n \"0300\" : [\"SQ\", \"ImageBoxesSequence\"],\n \"0302\" : [\"US\", \"ImageBoxNumber\"],\n \"0304\" : [\"CS\", \"ImageBoxLayoutType\"],\n \"0306\" : [\"US\", \"ImageBoxTileHorizontalDimension\"],\n \"0308\" : [\"US\", \"ImageBoxTileVerticalDimension\"],\n \"0310\" : [\"CS\", \"ImageBoxScrollDirection\"],\n \"0312\" : [\"CS\", \"ImageBoxSmallScrollType\"],\n \"0314\" : [\"US\", \"ImageBoxSmallScrollAmount\"],\n \"0316\" : [\"CS\", \"ImageBoxLargeScrollType\"],\n \"0318\" : [\"US\", \"ImageBoxLargeScrollAmount\"],\n \"0320\" : [\"US\", \"ImageBoxOverlapPriority\"],\n \"0330\" : [\"FD\", \"CineRelativeToRealTime\"],\n \"0400\" : [\"SQ\", \"FilterOperationsSequence\"],\n \"0402\" : [\"CS\", \"FilterByCategory\"],\n \"0404\" : [\"CS\", \"FilterByAttributePresence\"],\n \"0406\" : [\"CS\", \"FilterByOperator\"],\n \"0420\" : [\"US\", \"StructuredDisplayBackgroundCIELabValue\"],\n \"0421\" : [\"US\", \"EmptyImageBoxCIELabValue\"],\n \"0422\" : [\"SQ\", \"StructuredDisplayImageBoxSequence\"],\n \"0424\" : [\"SQ\", \"StructuredDisplayTextBoxSequence\"],\n \"0427\" : [\"SQ\", \"ReferencedFirstFrameSequence\"],\n \"0430\" : [\"SQ\", \"ImageBoxSynchronizationSequence\"],\n \"0432\" : [\"US\", \"SynchronizedImageBoxList\"],\n \"0434\" : [\"CS\", \"TypeOfSynchronization\"],\n \"0500\" : [\"CS\", \"BlendingOperationType\"],\n \"0510\" : [\"CS\", \"ReformattingOperationType\"],\n \"0512\" : [\"FD\", \"ReformattingThickness\"],\n \"0514\" : [\"FD\", \"ReformattingInterval\"],\n \"0516\" : [\"CS\", \"ReformattingOperationInitialViewDirection\"],\n \"0520\" : [\"CS\", \"ThreeDRenderingType\"],\n \"0600\" : [\"SQ\", \"SortingOperationsSequence\"],\n \"0602\" : [\"CS\", \"SortByCategory\"],\n \"0604\" : [\"CS\", \"SortingDirection\"],\n \"0700\" : [\"CS\", \"DisplaySetPatientOrientation\"],\n \"0702\" : [\"CS\", \"VOIType\"],\n \"0704\" : [\"CS\", \"PseudoColorType\"],\n \"0705\" : [\"SQ\", \"PseudoColorPaletteInstanceReferenceSequence\"],\n \"0706\" : [\"CS\", \"ShowGrayscaleInverted\"],\n \"0710\" : [\"CS\", \"ShowImageTrueSizeFlag\"],\n \"0712\" : [\"CS\", \"ShowGraphicAnnotationFlag\"],\n \"0714\" : [\"CS\", \"ShowPatientDemographicsFlag\"],\n \"0716\" : [\"CS\", \"ShowAcquisitionTechniquesFlag\"],\n \"0717\" : [\"CS\", \"DisplaySetHorizontalJustification\"],\n \"0718\" : [\"CS\", \"DisplaySetVerticalJustification\"]\n },\n \"0074\" : {\n \"0120\" : [\"FD\", \"ContinuationStartMeterset\"],\n \"0121\" : [\"FD\", \"ContinuationEndMeterset\"],\n \"1000\" : [\"CS\", \"ProcedureStepState\"],\n \"1002\" : [\"SQ\", \"ProcedureStepProgressInformationSequence\"],\n \"1004\" : [\"DS\", \"ProcedureStepProgress\"],\n \"1006\" : [\"ST\", \"ProcedureStepProgressDescription\"],\n \"1008\" : [\"SQ\", \"ProcedureStepCommunicationsURISequence\"],\n \"100A\" : [\"ST\", \"ContactURI\"],\n \"100C\" : [\"LO\", \"ContactDisplayName\"],\n \"100E\" : [\"SQ\", \"ProcedureStepDiscontinuationReasonCodeSequence\"],\n \"1020\" : [\"SQ\", \"BeamTaskSequence\"],\n \"1022\" : [\"CS\", \"BeamTaskType\"],\n \"1024\" : [\"IS\", \"BeamOrderIndexTrial\"],\n \"1026\" : [\"FD\", \"TableTopVerticalAdjustedPosition\"],\n \"1027\" : [\"FD\", \"TableTopLongitudinalAdjustedPosition\"],\n \"1028\" : [\"FD\", \"TableTopLateralAdjustedPosition\"],\n \"102A\" : [\"FD\", \"PatientSupportAdjustedAngle\"],\n \"102B\" : [\"FD\", \"TableTopEccentricAdjustedAngle\"],\n \"102C\" : [\"FD\", \"TableTopPitchAdjustedAngle\"],\n \"102D\" : [\"FD\", \"TableTopRollAdjustedAngle\"],\n \"1030\" : [\"SQ\", \"DeliveryVerificationImageSequence\"],\n \"1032\" : [\"CS\", \"VerificationImageTiming\"],\n \"1034\" : [\"CS\", \"DoubleExposureFlag\"],\n \"1036\" : [\"CS\", \"DoubleExposureOrdering\"],\n \"1038\" : [\"DS\", \"DoubleExposureMetersetTrial\"],\n \"103A\" : [\"DS\", \"DoubleExposureFieldDeltaTrial\"],\n \"1040\" : [\"SQ\", \"RelatedReferenceRTImageSequence\"],\n \"1042\" : [\"SQ\", \"GeneralMachineVerificationSequence\"],\n \"1044\" : [\"SQ\", \"ConventionalMachineVerificationSequence\"],\n \"1046\" : [\"SQ\", \"IonMachineVerificationSequence\"],\n \"1048\" : [\"SQ\", \"FailedAttributesSequence\"],\n \"104A\" : [\"SQ\", \"OverriddenAttributesSequence\"],\n \"104C\" : [\"SQ\", \"ConventionalControlPointVerificationSequence\"],\n \"104E\" : [\"SQ\", \"IonControlPointVerificationSequence\"],\n \"1050\" : [\"SQ\", \"AttributeOccurrenceSequence\"],\n \"1052\" : [\"AT\", \"AttributeOccurrencePointer\"],\n \"1054\" : [\"UL\", \"AttributeItemSelector\"],\n \"1056\" : [\"LO\", \"AttributeOccurrencePrivateCreator\"],\n \"1057\" : [\"IS\", \"SelectorSequencePointerItems\"],\n \"1200\" : [\"CS\", \"ScheduledProcedureStepPriority\"],\n \"1202\" : [\"LO\", \"WorklistLabel\"],\n \"1204\" : [\"LO\", \"ProcedureStepLabel\"],\n \"1210\" : [\"SQ\", \"ScheduledProcessingParametersSequence\"],\n \"1212\" : [\"SQ\", \"PerformedProcessingParametersSequence\"],\n \"1216\" : [\"SQ\", \"UnifiedProcedureStepPerformedProcedureSequence\"],\n \"1220\" : [\"SQ\", \"RelatedProcedureStepSequence\"],\n \"1222\" : [\"LO\", \"ProcedureStepRelationshipType\"],\n \"1224\" : [\"SQ\", \"ReplacedProcedureStepSequence\"],\n \"1230\" : [\"LO\", \"DeletionLock\"],\n \"1234\" : [\"AE\", \"ReceivingAE\"],\n \"1236\" : [\"AE\", \"RequestingAE\"],\n \"1238\" : [\"LT\", \"ReasonForCancellation\"],\n \"1242\" : [\"CS\", \"SCPStatus\"],\n \"1244\" : [\"CS\", \"SubscriptionListStatus\"],\n \"1246\" : [\"CS\", \"UnifiedProcedureStepListStatus\"],\n \"1324\" : [\"UL\", \"BeamOrderIndex\"],\n \"1338\" : [\"FD\", \"DoubleExposureMeterset\"],\n \"133A\" : [\"FD\", \"DoubleExposureFieldDelta\"]\n },\n \"0076\" : {\n \"0001\" : [\"LO\", \"ImplantAssemblyTemplateName\"],\n \"0003\" : [\"LO\", \"ImplantAssemblyTemplateIssuer\"],\n \"0006\" : [\"LO\", \"ImplantAssemblyTemplateVersion\"],\n \"0008\" : [\"SQ\", \"ReplacedImplantAssemblyTemplateSequence\"],\n \"000A\" : [\"CS\", \"ImplantAssemblyTemplateType\"],\n \"000C\" : [\"SQ\", \"OriginalImplantAssemblyTemplateSequence\"],\n \"000E\" : [\"SQ\", \"DerivationImplantAssemblyTemplateSequence\"],\n \"0010\" : [\"SQ\", \"ImplantAssemblyTemplateTargetAnatomySequence\"],\n \"0020\" : [\"SQ\", \"ProcedureTypeCodeSequence\"],\n \"0030\" : [\"LO\", \"SurgicalTechnique\"],\n \"0032\" : [\"SQ\", \"ComponentTypesSequence\"],\n \"0034\" : [\"CS\", \"ComponentTypeCodeSequence\"],\n \"0036\" : [\"CS\", \"ExclusiveComponentType\"],\n \"0038\" : [\"CS\", \"MandatoryComponentType\"],\n \"0040\" : [\"SQ\", \"ComponentSequence\"],\n \"0055\" : [\"US\", \"ComponentID\"],\n \"0060\" : [\"SQ\", \"ComponentAssemblySequence\"],\n \"0070\" : [\"US\", \"Component1ReferencedID\"],\n \"0080\" : [\"US\", \"Component1ReferencedMatingFeatureSetID\"],\n \"0090\" : [\"US\", \"Component1ReferencedMatingFeatureID\"],\n \"00A0\" : [\"US\", \"Component2ReferencedID\"],\n \"00B0\" : [\"US\", \"Component2ReferencedMatingFeatureSetID\"],\n \"00C0\" : [\"US\", \"Component2ReferencedMatingFeatureID\"]\n },\n \"0078\" : {\n \"0001\" : [\"LO\", \"ImplantTemplateGroupName\"],\n \"0010\" : [\"ST\", \"ImplantTemplateGroupDescription\"],\n \"0020\" : [\"LO\", \"ImplantTemplateGroupIssuer\"],\n \"0024\" : [\"LO\", \"ImplantTemplateGroupVersion\"],\n \"0026\" : [\"SQ\", \"ReplacedImplantTemplateGroupSequence\"],\n \"0028\" : [\"SQ\", \"ImplantTemplateGroupTargetAnatomySequence\"],\n \"002A\" : [\"SQ\", \"ImplantTemplateGroupMembersSequence\"],\n \"002E\" : [\"US\", \"ImplantTemplateGroupMemberID\"],\n \"0050\" : [\"FD\", \"ThreeDImplantTemplateGroupMemberMatchingPoint\"],\n \"0060\" : [\"FD\", \"ThreeDImplantTemplateGroupMemberMatchingAxes\"],\n \"0070\" : [\"SQ\", \"ImplantTemplateGroupMemberMatching2DCoordinatesSequence\"],\n \"0090\" : [\"FD\", \"TwoDImplantTemplateGroupMemberMatchingPoint\"],\n \"00A0\" : [\"FD\", \"TwoDImplantTemplateGroupMemberMatchingAxes\"],\n \"00B0\" : [\"SQ\", \"ImplantTemplateGroupVariationDimensionSequence\"],\n \"00B2\" : [\"LO\", \"ImplantTemplateGroupVariationDimensionName\"],\n \"00B4\" : [\"SQ\", \"ImplantTemplateGroupVariationDimensionRankSequence\"],\n \"00B6\" : [\"US\", \"ReferencedImplantTemplateGroupMemberID\"],\n \"00B8\" : [\"US\", \"ImplantTemplateGroupVariationDimensionRank\"]\n },\n \"0088\" : {\n \"0130\" : [\"SH\", \"StorageMediaFileSetID\"],\n \"0140\" : [\"UI\", \"StorageMediaFileSetUID\"],\n \"0200\" : [\"SQ\", \"IconImageSequence\"],\n \"0904\" : [\"LO\", \"TopicTitle\"],\n \"0906\" : [\"ST\", \"TopicSubject\"],\n \"0910\" : [\"LO\", \"TopicAuthor\"],\n \"0912\" : [\"LO\", \"TopicKeywords\"]\n },\n \"0100\" : {\n \"0410\" : [\"CS\", \"SOPInstanceStatus\"],\n \"0420\" : [\"DT\", \"SOPAuthorizationDateTime\"],\n \"0424\" : [\"LT\", \"SOPAuthorizationComment\"],\n \"0426\" : [\"LO\", \"AuthorizationEquipmentCertificationNumber\"]\n },\n \"0400\" : {\n \"0005\" : [\"US\", \"MACIDNumber\"],\n \"0010\" : [\"UI\", \"MACCalculationTransferSyntaxUID\"],\n \"0015\" : [\"CS\", \"MACAlgorithm\"],\n \"0020\" : [\"AT\", \"DataElementsSigned\"],\n \"0100\" : [\"UI\", \"DigitalSignatureUID\"],\n \"0105\" : [\"DT\", \"DigitalSignatureDateTime\"],\n \"0110\" : [\"CS\", \"CertificateType\"],\n \"0115\" : [\"OB\", \"CertificateOfSigner\"],\n \"0120\" : [\"OB\", \"Signature\"],\n \"0305\" : [\"CS\", \"CertifiedTimestampType\"],\n \"0310\" : [\"OB\", \"CertifiedTimestamp\"],\n \"0401\" : [\"SQ\", \"DigitalSignaturePurposeCodeSequence\"],\n \"0402\" : [\"SQ\", \"ReferencedDigitalSignatureSequence\"],\n \"0403\" : [\"SQ\", \"ReferencedSOPInstanceMACSequence\"],\n \"0404\" : [\"OB\", \"MAC\"],\n \"0500\" : [\"SQ\", \"EncryptedAttributesSequence\"],\n \"0510\" : [\"UI\", \"EncryptedContentTransferSyntaxUID\"],\n \"0520\" : [\"OB\", \"EncryptedContent\"],\n \"0550\" : [\"SQ\", \"ModifiedAttributesSequence\"],\n \"0561\" : [\"SQ\", \"OriginalAttributesSequence\"],\n \"0562\" : [\"DT\", \"AttributeModificationDateTime\"],\n \"0563\" : [\"LO\", \"ModifyingSystem\"],\n \"0564\" : [\"LO\", \"SourceOfPreviousValues\"],\n \"0565\" : [\"CS\", \"ReasonForTheAttributeModification\"]\n },\n \"2000\" : {\n \"0010\" : [\"IS\", \"NumberOfCopies\"],\n \"001E\" : [\"SQ\", \"PrinterConfigurationSequence\"],\n \"0020\" : [\"CS\", \"PrintPriority\"],\n \"0030\" : [\"CS\", \"MediumType\"],\n \"0040\" : [\"CS\", \"FilmDestination\"],\n \"0050\" : [\"LO\", \"FilmSessionLabel\"],\n \"0060\" : [\"IS\", \"MemoryAllocation\"],\n \"0061\" : [\"IS\", \"MaximumMemoryAllocation\"],\n \"0062\" : [\"CS\", \"ColorImagePrintingFlag\"],\n \"0063\" : [\"CS\", \"CollationFlag\"],\n \"0065\" : [\"CS\", \"AnnotationFlag\"],\n \"0067\" : [\"CS\", \"ImageOverlayFlag\"],\n \"0069\" : [\"CS\", \"PresentationLUTFlag\"],\n \"006A\" : [\"CS\", \"ImageBoxPresentationLUTFlag\"],\n \"00A0\" : [\"US\", \"MemoryBitDepth\"],\n \"00A1\" : [\"US\", \"PrintingBitDepth\"],\n \"00A2\" : [\"SQ\", \"MediaInstalledSequence\"],\n \"00A4\" : [\"SQ\", \"OtherMediaAvailableSequence\"],\n \"00A8\" : [\"SQ\", \"SupportedImageDisplayFormatsSequence\"],\n \"0500\" : [\"SQ\", \"ReferencedFilmBoxSequence\"],\n \"0510\" : [\"SQ\", \"ReferencedStoredPrintSequence\"]\n },\n \"2010\" : {\n \"0010\" : [\"ST\", \"ImageDisplayFormat\"],\n \"0030\" : [\"CS\", \"AnnotationDisplayFormatID\"],\n \"0040\" : [\"CS\", \"FilmOrientation\"],\n \"0050\" : [\"CS\", \"FilmSizeID\"],\n \"0052\" : [\"CS\", \"PrinterResolutionID\"],\n \"0054\" : [\"CS\", \"DefaultPrinterResolutionID\"],\n \"0060\" : [\"CS\", \"MagnificationType\"],\n \"0080\" : [\"CS\", \"SmoothingType\"],\n \"00A6\" : [\"CS\", \"DefaultMagnificationType\"],\n \"00A7\" : [\"CS\", \"OtherMagnificationTypesAvailable\"],\n \"00A8\" : [\"CS\", \"DefaultSmoothingType\"],\n \"00A9\" : [\"CS\", \"OtherSmoothingTypesAvailable\"],\n \"0100\" : [\"CS\", \"BorderDensity\"],\n \"0110\" : [\"CS\", \"EmptyImageDensity\"],\n \"0120\" : [\"US\", \"MinDensity\"],\n \"0130\" : [\"US\", \"MaxDensity\"],\n \"0140\" : [\"CS\", \"Trim\"],\n \"0150\" : [\"ST\", \"ConfigurationInformation\"],\n \"0152\" : [\"LT\", \"ConfigurationInformationDescription\"],\n \"0154\" : [\"IS\", \"MaximumCollatedFilms\"],\n \"015E\" : [\"US\", \"Illumination\"],\n \"0160\" : [\"US\", \"ReflectedAmbientLight\"],\n \"0376\" : [\"DS\", \"PrinterPixelSpacing\"],\n \"0500\" : [\"SQ\", \"ReferencedFilmSessionSequence\"],\n \"0510\" : [\"SQ\", \"ReferencedImageBoxSequence\"],\n \"0520\" : [\"SQ\", \"ReferencedBasicAnnotationBoxSequence\"]\n },\n \"2020\" : {\n \"0010\" : [\"US\", \"ImageBoxPosition\"],\n \"0020\" : [\"CS\", \"Polarity\"],\n \"0030\" : [\"DS\", \"RequestedImageSize\"],\n \"0040\" : [\"CS\", \"RequestedDecimateCropBehavior\"],\n \"0050\" : [\"CS\", \"RequestedResolutionID\"],\n \"00A0\" : [\"CS\", \"RequestedImageSizeFlag\"],\n \"00A2\" : [\"CS\", \"DecimateCropResult\"],\n \"0110\" : [\"SQ\", \"BasicGrayscaleImageSequence\"],\n \"0111\" : [\"SQ\", \"BasicColorImageSequence\"],\n \"0130\" : [\"SQ\", \"ReferencedImageOverlayBoxSequence\"],\n \"0140\" : [\"SQ\", \"ReferencedVOILUTBoxSequence\"]\n },\n \"2030\" : {\n \"0010\" : [\"US\", \"AnnotationPosition\"],\n \"0020\" : [\"LO\", \"TextString\"]\n },\n \"2040\" : {\n \"0010\" : [\"SQ\", \"ReferencedOverlayPlaneSequence\"],\n \"0011\" : [\"US\", \"ReferencedOverlayPlaneGroups\"],\n \"0020\" : [\"SQ\", \"OverlayPixelDataSequence\"],\n \"0060\" : [\"CS\", \"OverlayMagnificationType\"],\n \"0070\" : [\"CS\", \"OverlaySmoothingType\"],\n \"0072\" : [\"CS\", \"OverlayOrImageMagnification\"],\n \"0074\" : [\"US\", \"MagnifyToNumberOfColumns\"],\n \"0080\" : [\"CS\", \"OverlayForegroundDensity\"],\n \"0082\" : [\"CS\", \"OverlayBackgroundDensity\"],\n \"0090\" : [\"CS\", \"OverlayMode\"],\n \"0100\" : [\"CS\", \"ThresholdDensity\"],\n \"0500\" : [\"SQ\", \"ReferencedImageBoxSequenceRetired\"]\n },\n \"2050\" : {\n \"0010\" : [\"SQ\", \"PresentationLUTSequence\"],\n \"0020\" : [\"CS\", \"PresentationLUTShape\"],\n \"0500\" : [\"SQ\", \"ReferencedPresentationLUTSequence\"]\n },\n \"2100\" : {\n \"0010\" : [\"SH\", \"PrintJobID\"],\n \"0020\" : [\"CS\", \"ExecutionStatus\"],\n \"0030\" : [\"CS\", \"ExecutionStatusInfo\"],\n \"0040\" : [\"DA\", \"CreationDate\"],\n \"0050\" : [\"TM\", \"CreationTime\"],\n \"0070\" : [\"AE\", \"Originator\"],\n \"0140\" : [\"AE\", \"DestinationAE\"],\n \"0160\" : [\"SH\", \"OwnerID\"],\n \"0170\" : [\"IS\", \"NumberOfFilms\"],\n \"0500\" : [\"SQ\", \"ReferencedPrintJobSequencePullStoredPrint\"]\n },\n \"2110\" : {\n \"0010\" : [\"CS\", \"PrinterStatus\"],\n \"0020\" : [\"CS\", \"PrinterStatusInfo\"],\n \"0030\" : [\"LO\", \"PrinterName\"],\n \"0099\" : [\"SH\", \"PrintQueueID\"]\n },\n \"2120\" : {\n \"0010\" : [\"CS\", \"QueueStatus\"],\n \"0050\" : [\"SQ\", \"PrintJobDescriptionSequence\"],\n \"0070\" : [\"SQ\", \"ReferencedPrintJobSequence\"]\n },\n \"2130\" : {\n \"0010\" : [\"SQ\", \"PrintManagementCapabilitiesSequence\"],\n \"0015\" : [\"SQ\", \"PrinterCharacteristicsSequence\"],\n \"0030\" : [\"SQ\", \"FilmBoxContentSequence\"],\n \"0040\" : [\"SQ\", \"ImageBoxContentSequence\"],\n \"0050\" : [\"SQ\", \"AnnotationContentSequence\"],\n \"0060\" : [\"SQ\", \"ImageOverlayBoxContentSequence\"],\n \"0080\" : [\"SQ\", \"PresentationLUTContentSequence\"],\n \"00A0\" : [\"SQ\", \"ProposedStudySequence\"],\n \"00C0\" : [\"SQ\", \"OriginalImageSequence\"]\n },\n \"2200\" : {\n \"0001\" : [\"CS\", \"LabelUsingInformationExtractedFromInstances\"],\n \"0002\" : [\"UT\", \"LabelText\"],\n \"0003\" : [\"CS\", \"LabelStyleSelection\"],\n \"0004\" : [\"LT\", \"MediaDisposition\"],\n \"0005\" : [\"LT\", \"BarcodeValue\"],\n \"0006\" : [\"CS\", \"BarcodeSymbology\"],\n \"0007\" : [\"CS\", \"AllowMediaSplitting\"],\n \"0008\" : [\"CS\", \"IncludeNonDICOMObjects\"],\n \"0009\" : [\"CS\", \"IncludeDisplayApplication\"],\n \"000A\" : [\"CS\", \"PreserveCompositeInstancesAfterMediaCreation\"],\n \"000B\" : [\"US\", \"TotalNumberOfPiecesOfMediaCreated\"],\n \"000C\" : [\"LO\", \"RequestedMediaApplicationProfile\"],\n \"000D\" : [\"SQ\", \"ReferencedStorageMediaSequence\"],\n \"000E\" : [\"AT\", \"FailureAttributes\"],\n \"000F\" : [\"CS\", \"AllowLossyCompression\"],\n \"0020\" : [\"CS\", \"RequestPriority\"]\n },\n \"3002\" : {\n \"0002\" : [\"SH\", \"RTImageLabel\"],\n \"0003\" : [\"LO\", \"RTImageName\"],\n \"0004\" : [\"ST\", \"RTImageDescription\"],\n \"000A\" : [\"CS\", \"ReportedValuesOrigin\"],\n \"000C\" : [\"CS\", \"RTImagePlane\"],\n \"000D\" : [\"DS\", \"XRayImageReceptorTranslation\"],\n \"000E\" : [\"DS\", \"XRayImageReceptorAngle\"],\n \"0010\" : [\"DS\", \"RTImageOrientation\"],\n \"0011\" : [\"DS\", \"ImagePlanePixelSpacing\"],\n \"0012\" : [\"DS\", \"RTImagePosition\"],\n \"0020\" : [\"SH\", \"RadiationMachineName\"],\n \"0022\" : [\"DS\", \"RadiationMachineSAD\"],\n \"0024\" : [\"DS\", \"RadiationMachineSSD\"],\n \"0026\" : [\"DS\", \"RTImageSID\"],\n \"0028\" : [\"DS\", \"SourceToReferenceObjectDistance\"],\n \"0029\" : [\"IS\", \"FractionNumber\"],\n \"0030\" : [\"SQ\", \"ExposureSequence\"],\n \"0032\" : [\"DS\", \"MetersetExposure\"],\n \"0034\" : [\"DS\", \"DiaphragmPosition\"],\n \"0040\" : [\"SQ\", \"FluenceMapSequence\"],\n \"0041\" : [\"CS\", \"FluenceDataSource\"],\n \"0042\" : [\"DS\", \"FluenceDataScale\"],\n \"0050\" : [\"SQ\", \"PrimaryFluenceModeSequence\"],\n \"0051\" : [\"CS\", \"FluenceMode\"],\n \"0052\" : [\"SH\", \"FluenceModeID\"]\n },\n \"3004\" : {\n \"0001\" : [\"CS\", \"DVHType\"],\n \"0002\" : [\"CS\", \"DoseUnits\"],\n \"0004\" : [\"CS\", \"DoseType\"],\n \"0006\" : [\"LO\", \"DoseComment\"],\n \"0008\" : [\"DS\", \"NormalizationPoint\"],\n \"000A\" : [\"CS\", \"DoseSummationType\"],\n \"000C\" : [\"DS\", \"GridFrameOffsetVector\"],\n \"000E\" : [\"DS\", \"DoseGridScaling\"],\n \"0010\" : [\"SQ\", \"RTDoseROISequence\"],\n \"0012\" : [\"DS\", \"DoseValue\"],\n \"0014\" : [\"CS\", \"TissueHeterogeneityCorrection\"],\n \"0040\" : [\"DS\", \"DVHNormalizationPoint\"],\n \"0042\" : [\"DS\", \"DVHNormalizationDoseValue\"],\n \"0050\" : [\"SQ\", \"DVHSequence\"],\n \"0052\" : [\"DS\", \"DVHDoseScaling\"],\n \"0054\" : [\"CS\", \"DVHVolumeUnits\"],\n \"0056\" : [\"IS\", \"DVHNumberOfBins\"],\n \"0058\" : [\"DS\", \"DVHData\"],\n \"0060\" : [\"SQ\", \"DVHReferencedROISequence\"],\n \"0062\" : [\"CS\", \"DVHROIContributionType\"],\n \"0070\" : [\"DS\", \"DVHMinimumDose\"],\n \"0072\" : [\"DS\", \"DVHMaximumDose\"],\n \"0074\" : [\"DS\", \"DVHMeanDose\"]\n },\n \"3006\" : {\n \"0002\" : [\"SH\", \"StructureSetLabel\"],\n \"0004\" : [\"LO\", \"StructureSetName\"],\n \"0006\" : [\"ST\", \"StructureSetDescription\"],\n \"0008\" : [\"DA\", \"StructureSetDate\"],\n \"0009\" : [\"TM\", \"StructureSetTime\"],\n \"0010\" : [\"SQ\", \"ReferencedFrameOfReferenceSequence\"],\n \"0012\" : [\"SQ\", \"RTReferencedStudySequence\"],\n \"0014\" : [\"SQ\", \"RTReferencedSeriesSequence\"],\n \"0016\" : [\"SQ\", \"ContourImageSequence\"],\n \"0020\" : [\"SQ\", \"StructureSetROISequence\"],\n \"0022\" : [\"IS\", \"ROINumber\"],\n \"0024\" : [\"UI\", \"ReferencedFrameOfReferenceUID\"],\n \"0026\" : [\"LO\", \"ROIName\"],\n \"0028\" : [\"ST\", \"ROIDescription\"],\n \"002A\" : [\"IS\", \"ROIDisplayColor\"],\n \"002C\" : [\"DS\", \"ROIVolume\"],\n \"0030\" : [\"SQ\", \"RTRelatedROISequence\"],\n \"0033\" : [\"CS\", \"RTROIRelationship\"],\n \"0036\" : [\"CS\", \"ROIGenerationAlgorithm\"],\n \"0038\" : [\"LO\", \"ROIGenerationDescription\"],\n \"0039\" : [\"SQ\", \"ROIContourSequence\"],\n \"0040\" : [\"SQ\", \"ContourSequence\"],\n \"0042\" : [\"CS\", \"ContourGeometricType\"],\n \"0044\" : [\"DS\", \"ContourSlabThickness\"],\n \"0045\" : [\"DS\", \"ContourOffsetVector\"],\n \"0046\" : [\"IS\", \"NumberOfContourPoints\"],\n \"0048\" : [\"IS\", \"ContourNumber\"],\n \"0049\" : [\"IS\", \"AttachedContours\"],\n \"0050\" : [\"DS\", \"ContourData\"],\n \"0080\" : [\"SQ\", \"RTROIObservationsSequence\"],\n \"0082\" : [\"IS\", \"ObservationNumber\"],\n \"0084\" : [\"IS\", \"ReferencedROINumber\"],\n \"0085\" : [\"SH\", \"ROIObservationLabel\"],\n \"0086\" : [\"SQ\", \"RTROIIdentificationCodeSequence\"],\n \"0088\" : [\"ST\", \"ROIObservationDescription\"],\n \"00A0\" : [\"SQ\", \"RelatedRTROIObservationsSequence\"],\n \"00A4\" : [\"CS\", \"RTROIInterpretedType\"],\n \"00A6\" : [\"PN\", \"ROIInterpreter\"],\n \"00B0\" : [\"SQ\", \"ROIPhysicalPropertiesSequence\"],\n \"00B2\" : [\"CS\", \"ROIPhysicalProperty\"],\n \"00B4\" : [\"DS\", \"ROIPhysicalPropertyValue\"],\n \"00B6\" : [\"SQ\", \"ROIElementalCompositionSequence\"],\n \"00B7\" : [\"US\", \"ROIElementalCompositionAtomicNumber\"],\n \"00B8\" : [\"FL\", \"ROIElementalCompositionAtomicMassFraction\"],\n \"00C0\" : [\"SQ\", \"FrameOfReferenceRelationshipSequence\"],\n \"00C2\" : [\"UI\", \"RelatedFrameOfReferenceUID\"],\n \"00C4\" : [\"CS\", \"FrameOfReferenceTransformationType\"],\n \"00C6\" : [\"DS\", \"FrameOfReferenceTransformationMatrix\"],\n \"00C8\" : [\"LO\", \"FrameOfReferenceTransformationComment\"]\n },\n \"3008\" : {\n \"0010\" : [\"SQ\", \"MeasuredDoseReferenceSequence\"],\n \"0012\" : [\"ST\", \"MeasuredDoseDescription\"],\n \"0014\" : [\"CS\", \"MeasuredDoseType\"],\n \"0016\" : [\"DS\", \"MeasuredDoseValue\"],\n \"0020\" : [\"SQ\", \"TreatmentSessionBeamSequence\"],\n \"0021\" : [\"SQ\", \"TreatmentSessionIonBeamSequence\"],\n \"0022\" : [\"IS\", \"CurrentFractionNumber\"],\n \"0024\" : [\"DA\", \"TreatmentControlPointDate\"],\n \"0025\" : [\"TM\", \"TreatmentControlPointTime\"],\n \"002A\" : [\"CS\", \"TreatmentTerminationStatus\"],\n \"002B\" : [\"SH\", \"TreatmentTerminationCode\"],\n \"002C\" : [\"CS\", \"TreatmentVerificationStatus\"],\n \"0030\" : [\"SQ\", \"ReferencedTreatmentRecordSequence\"],\n \"0032\" : [\"DS\", \"SpecifiedPrimaryMeterset\"],\n \"0033\" : [\"DS\", \"SpecifiedSecondaryMeterset\"],\n \"0036\" : [\"DS\", \"DeliveredPrimaryMeterset\"],\n \"0037\" : [\"DS\", \"DeliveredSecondaryMeterset\"],\n \"003A\" : [\"DS\", \"SpecifiedTreatmentTime\"],\n \"003B\" : [\"DS\", \"DeliveredTreatmentTime\"],\n \"0040\" : [\"SQ\", \"ControlPointDeliverySequence\"],\n \"0041\" : [\"SQ\", \"IonControlPointDeliverySequence\"],\n \"0042\" : [\"DS\", \"SpecifiedMeterset\"],\n \"0044\" : [\"DS\", \"DeliveredMeterset\"],\n \"0045\" : [\"FL\", \"MetersetRateSet\"],\n \"0046\" : [\"FL\", \"MetersetRateDelivered\"],\n \"0047\" : [\"FL\", \"ScanSpotMetersetsDelivered\"],\n \"0048\" : [\"DS\", \"DoseRateDelivered\"],\n \"0050\" : [\"SQ\", \"TreatmentSummaryCalculatedDoseReferenceSequence\"],\n \"0052\" : [\"DS\", \"CumulativeDoseToDoseReference\"],\n \"0054\" : [\"DA\", \"FirstTreatmentDate\"],\n \"0056\" : [\"DA\", \"MostRecentTreatmentDate\"],\n \"005A\" : [\"IS\", \"NumberOfFractionsDelivered\"],\n \"0060\" : [\"SQ\", \"OverrideSequence\"],\n \"0061\" : [\"AT\", \"ParameterSequencePointer\"],\n \"0062\" : [\"AT\", \"OverrideParameterPointer\"],\n \"0063\" : [\"IS\", \"ParameterItemIndex\"],\n \"0064\" : [\"IS\", \"MeasuredDoseReferenceNumber\"],\n \"0065\" : [\"AT\", \"ParameterPointer\"],\n \"0066\" : [\"ST\", \"OverrideReason\"],\n \"0068\" : [\"SQ\", \"CorrectedParameterSequence\"],\n \"006A\" : [\"FL\", \"CorrectionValue\"],\n \"0070\" : [\"SQ\", \"CalculatedDoseReferenceSequence\"],\n \"0072\" : [\"IS\", \"CalculatedDoseReferenceNumber\"],\n \"0074\" : [\"ST\", \"CalculatedDoseReferenceDescription\"],\n \"0076\" : [\"DS\", \"CalculatedDoseReferenceDoseValue\"],\n \"0078\" : [\"DS\", \"StartMeterset\"],\n \"007A\" : [\"DS\", \"EndMeterset\"],\n \"0080\" : [\"SQ\", \"ReferencedMeasuredDoseReferenceSequence\"],\n \"0082\" : [\"IS\", \"ReferencedMeasuredDoseReferenceNumber\"],\n \"0090\" : [\"SQ\", \"ReferencedCalculatedDoseReferenceSequence\"],\n \"0092\" : [\"IS\", \"ReferencedCalculatedDoseReferenceNumber\"],\n \"00A0\" : [\"SQ\", \"BeamLimitingDeviceLeafPairsSequence\"],\n \"00B0\" : [\"SQ\", \"RecordedWedgeSequence\"],\n \"00C0\" : [\"SQ\", \"RecordedCompensatorSequence\"],\n \"00D0\" : [\"SQ\", \"RecordedBlockSequence\"],\n \"00E0\" : [\"SQ\", \"TreatmentSummaryMeasuredDoseReferenceSequence\"],\n \"00F0\" : [\"SQ\", \"RecordedSnoutSequence\"],\n \"00F2\" : [\"SQ\", \"RecordedRangeShifterSequence\"],\n \"00F4\" : [\"SQ\", \"RecordedLateralSpreadingDeviceSequence\"],\n \"00F6\" : [\"SQ\", \"RecordedRangeModulatorSequence\"],\n \"0100\" : [\"SQ\", \"RecordedSourceSequence\"],\n \"0105\" : [\"LO\", \"SourceSerialNumber\"],\n \"0110\" : [\"SQ\", \"TreatmentSessionApplicationSetupSequence\"],\n \"0116\" : [\"CS\", \"ApplicationSetupCheck\"],\n \"0120\" : [\"SQ\", \"RecordedBrachyAccessoryDeviceSequence\"],\n \"0122\" : [\"IS\", \"ReferencedBrachyAccessoryDeviceNumber\"],\n \"0130\" : [\"SQ\", \"RecordedChannelSequence\"],\n \"0132\" : [\"DS\", \"SpecifiedChannelTotalTime\"],\n \"0134\" : [\"DS\", \"DeliveredChannelTotalTime\"],\n \"0136\" : [\"IS\", \"SpecifiedNumberOfPulses\"],\n \"0138\" : [\"IS\", \"DeliveredNumberOfPulses\"],\n \"013A\" : [\"DS\", \"SpecifiedPulseRepetitionInterval\"],\n \"013C\" : [\"DS\", \"DeliveredPulseRepetitionInterval\"],\n \"0140\" : [\"SQ\", \"RecordedSourceApplicatorSequence\"],\n \"0142\" : [\"IS\", \"ReferencedSourceApplicatorNumber\"],\n \"0150\" : [\"SQ\", \"RecordedChannelShieldSequence\"],\n \"0152\" : [\"IS\", \"ReferencedChannelShieldNumber\"],\n \"0160\" : [\"SQ\", \"BrachyControlPointDeliveredSequence\"],\n \"0162\" : [\"DA\", \"SafePositionExitDate\"],\n \"0164\" : [\"TM\", \"SafePositionExitTime\"],\n \"0166\" : [\"DA\", \"SafePositionReturnDate\"],\n \"0168\" : [\"TM\", \"SafePositionReturnTime\"],\n \"0200\" : [\"CS\", \"CurrentTreatmentStatus\"],\n \"0202\" : [\"ST\", \"TreatmentStatusComment\"],\n \"0220\" : [\"SQ\", \"FractionGroupSummarySequence\"],\n \"0223\" : [\"IS\", \"ReferencedFractionNumber\"],\n \"0224\" : [\"CS\", \"FractionGroupType\"],\n \"0230\" : [\"CS\", \"BeamStopperPosition\"],\n \"0240\" : [\"SQ\", \"FractionStatusSummarySequence\"],\n \"0250\" : [\"DA\", \"TreatmentDate\"],\n \"0251\" : [\"TM\", \"TreatmentTime\"]\n },\n \"300A\" : {\n \"0002\" : [\"SH\", \"RTPlanLabel\"],\n \"0003\" : [\"LO\", \"RTPlanName\"],\n \"0004\" : [\"ST\", \"RTPlanDescription\"],\n \"0006\" : [\"DA\", \"RTPlanDate\"],\n \"0007\" : [\"TM\", \"RTPlanTime\"],\n \"0009\" : [\"LO\", \"TreatmentProtocols\"],\n \"000A\" : [\"CS\", \"PlanIntent\"],\n \"000B\" : [\"LO\", \"TreatmentSites\"],\n \"000C\" : [\"CS\", \"RTPlanGeometry\"],\n \"000E\" : [\"ST\", \"PrescriptionDescription\"],\n \"0010\" : [\"SQ\", \"DoseReferenceSequence\"],\n \"0012\" : [\"IS\", \"DoseReferenceNumber\"],\n \"0013\" : [\"UI\", \"DoseReferenceUID\"],\n \"0014\" : [\"CS\", \"DoseReferenceStructureType\"],\n \"0015\" : [\"CS\", \"NominalBeamEnergyUnit\"],\n \"0016\" : [\"LO\", \"DoseReferenceDescription\"],\n \"0018\" : [\"DS\", \"DoseReferencePointCoordinates\"],\n \"001A\" : [\"DS\", \"NominalPriorDose\"],\n \"0020\" : [\"CS\", \"DoseReferenceType\"],\n \"0021\" : [\"DS\", \"ConstraintWeight\"],\n \"0022\" : [\"DS\", \"DeliveryWarningDose\"],\n \"0023\" : [\"DS\", \"DeliveryMaximumDose\"],\n \"0025\" : [\"DS\", \"TargetMinimumDose\"],\n \"0026\" : [\"DS\", \"TargetPrescriptionDose\"],\n \"0027\" : [\"DS\", \"TargetMaximumDose\"],\n \"0028\" : [\"DS\", \"TargetUnderdoseVolumeFraction\"],\n \"002A\" : [\"DS\", \"OrganAtRiskFullVolumeDose\"],\n \"002B\" : [\"DS\", \"OrganAtRiskLimitDose\"],\n \"002C\" : [\"DS\", \"OrganAtRiskMaximumDose\"],\n \"002D\" : [\"DS\", \"OrganAtRiskOverdoseVolumeFraction\"],\n \"0040\" : [\"SQ\", \"ToleranceTableSequence\"],\n \"0042\" : [\"IS\", \"ToleranceTableNumber\"],\n \"0043\" : [\"SH\", \"ToleranceTableLabel\"],\n \"0044\" : [\"DS\", \"GantryAngleTolerance\"],\n \"0046\" : [\"DS\", \"BeamLimitingDeviceAngleTolerance\"],\n \"0048\" : [\"SQ\", \"BeamLimitingDeviceToleranceSequence\"],\n \"004A\" : [\"DS\", \"BeamLimitingDevicePositionTolerance\"],\n \"004B\" : [\"FL\", \"SnoutPositionTolerance\"],\n \"004C\" : [\"DS\", \"PatientSupportAngleTolerance\"],\n \"004E\" : [\"DS\", \"TableTopEccentricAngleTolerance\"],\n \"004F\" : [\"FL\", \"TableTopPitchAngleTolerance\"],\n \"0050\" : [\"FL\", \"TableTopRollAngleTolerance\"],\n \"0051\" : [\"DS\", \"TableTopVerticalPositionTolerance\"],\n \"0052\" : [\"DS\", \"TableTopLongitudinalPositionTolerance\"],\n \"0053\" : [\"DS\", \"TableTopLateralPositionTolerance\"],\n \"0055\" : [\"CS\", \"RTPlanRelationship\"],\n \"0070\" : [\"SQ\", \"FractionGroupSequence\"],\n \"0071\" : [\"IS\", \"FractionGroupNumber\"],\n \"0072\" : [\"LO\", \"FractionGroupDescription\"],\n \"0078\" : [\"IS\", \"NumberOfFractionsPlanned\"],\n \"0079\" : [\"IS\", \"NumberOfFractionPatternDigitsPerDay\"],\n \"007A\" : [\"IS\", \"RepeatFractionCycleLength\"],\n \"007B\" : [\"LT\", \"FractionPattern\"],\n \"0080\" : [\"IS\", \"NumberOfBeams\"],\n \"0082\" : [\"DS\", \"BeamDoseSpecificationPoint\"],\n \"0084\" : [\"DS\", \"BeamDose\"],\n \"0086\" : [\"DS\", \"BeamMeterset\"],\n \"0088\" : [\"FL\", \"BeamDosePointDepth\"],\n \"0089\" : [\"FL\", \"BeamDosePointEquivalentDepth\"],\n \"008A\" : [\"FL\", \"BeamDosePointSSD\"],\n \"00A0\" : [\"IS\", \"NumberOfBrachyApplicationSetups\"],\n \"00A2\" : [\"DS\", \"BrachyApplicationSetupDoseSpecificationPoint\"],\n \"00A4\" : [\"DS\", \"BrachyApplicationSetupDose\"],\n \"00B0\" : [\"SQ\", \"BeamSequence\"],\n \"00B2\" : [\"SH\", \"TreatmentMachineName\"],\n \"00B3\" : [\"CS\", \"PrimaryDosimeterUnit\"],\n \"00B4\" : [\"DS\", \"SourceAxisDistance\"],\n \"00B6\" : [\"SQ\", \"BeamLimitingDeviceSequence\"],\n \"00B8\" : [\"CS\", \"RTBeamLimitingDeviceType\"],\n \"00BA\" : [\"DS\", \"SourceToBeamLimitingDeviceDistance\"],\n \"00BB\" : [\"FL\", \"IsocenterToBeamLimitingDeviceDistance\"],\n \"00BC\" : [\"IS\", \"NumberOfLeafJawPairs\"],\n \"00BE\" : [\"DS\", \"LeafPositionBoundaries\"],\n \"00C0\" : [\"IS\", \"BeamNumber\"],\n \"00C2\" : [\"LO\", \"BeamName\"],\n \"00C3\" : [\"ST\", \"BeamDescription\"],\n \"00C4\" : [\"CS\", \"BeamType\"],\n \"00C6\" : [\"CS\", \"RadiationType\"],\n \"00C7\" : [\"CS\", \"HighDoseTechniqueType\"],\n \"00C8\" : [\"IS\", \"ReferenceImageNumber\"],\n \"00CA\" : [\"SQ\", \"PlannedVerificationImageSequence\"],\n \"00CC\" : [\"LO\", \"ImagingDeviceSpecificAcquisitionParameters\"],\n \"00CE\" : [\"CS\", \"TreatmentDeliveryType\"],\n \"00D0\" : [\"IS\", \"NumberOfWedges\"],\n \"00D1\" : [\"SQ\", \"WedgeSequence\"],\n \"00D2\" : [\"IS\", \"WedgeNumber\"],\n \"00D3\" : [\"CS\", \"WedgeType\"],\n \"00D4\" : [\"SH\", \"WedgeID\"],\n \"00D5\" : [\"IS\", \"WedgeAngle\"],\n \"00D6\" : [\"DS\", \"WedgeFactor\"],\n \"00D7\" : [\"FL\", \"TotalWedgeTrayWaterEquivalentThickness\"],\n \"00D8\" : [\"DS\", \"WedgeOrientation\"],\n \"00D9\" : [\"FL\", \"IsocenterToWedgeTrayDistance\"],\n \"00DA\" : [\"DS\", \"SourceToWedgeTrayDistance\"],\n \"00DB\" : [\"FL\", \"WedgeThinEdgePosition\"],\n \"00DC\" : [\"SH\", \"BolusID\"],\n \"00DD\" : [\"ST\", \"BolusDescription\"],\n \"00E0\" : [\"IS\", \"NumberOfCompensators\"],\n \"00E1\" : [\"SH\", \"MaterialID\"],\n \"00E2\" : [\"DS\", \"TotalCompensatorTrayFactor\"],\n \"00E3\" : [\"SQ\", \"CompensatorSequence\"],\n \"00E4\" : [\"IS\", \"CompensatorNumber\"],\n \"00E5\" : [\"SH\", \"CompensatorID\"],\n \"00E6\" : [\"DS\", \"SourceToCompensatorTrayDistance\"],\n \"00E7\" : [\"IS\", \"CompensatorRows\"],\n \"00E8\" : [\"IS\", \"CompensatorColumns\"],\n \"00E9\" : [\"DS\", \"CompensatorPixelSpacing\"],\n \"00EA\" : [\"DS\", \"CompensatorPosition\"],\n \"00EB\" : [\"DS\", \"CompensatorTransmissionData\"],\n \"00EC\" : [\"DS\", \"CompensatorThicknessData\"],\n \"00ED\" : [\"IS\", \"NumberOfBoli\"],\n \"00EE\" : [\"CS\", \"CompensatorType\"],\n \"00F0\" : [\"IS\", \"NumberOfBlocks\"],\n \"00F2\" : [\"DS\", \"TotalBlockTrayFactor\"],\n \"00F3\" : [\"FL\", \"TotalBlockTrayWaterEquivalentThickness\"],\n \"00F4\" : [\"SQ\", \"BlockSequence\"],\n \"00F5\" : [\"SH\", \"BlockTrayID\"],\n \"00F6\" : [\"DS\", \"SourceToBlockTrayDistance\"],\n \"00F7\" : [\"FL\", \"IsocenterToBlockTrayDistance\"],\n \"00F8\" : [\"CS\", \"BlockType\"],\n \"00F9\" : [\"LO\", \"AccessoryCode\"],\n \"00FA\" : [\"CS\", \"BlockDivergence\"],\n \"00FB\" : [\"CS\", \"BlockMountingPosition\"],\n \"00FC\" : [\"IS\", \"BlockNumber\"],\n \"00FE\" : [\"LO\", \"BlockName\"],\n \"0100\" : [\"DS\", \"BlockThickness\"],\n \"0102\" : [\"DS\", \"BlockTransmission\"],\n \"0104\" : [\"IS\", \"BlockNumberOfPoints\"],\n \"0106\" : [\"DS\", \"BlockData\"],\n \"0107\" : [\"SQ\", \"ApplicatorSequence\"],\n \"0108\" : [\"SH\", \"ApplicatorID\"],\n \"0109\" : [\"CS\", \"ApplicatorType\"],\n \"010A\" : [\"LO\", \"ApplicatorDescription\"],\n \"010C\" : [\"DS\", \"CumulativeDoseReferenceCoefficient\"],\n \"010E\" : [\"DS\", \"FinalCumulativeMetersetWeight\"],\n \"0110\" : [\"IS\", \"NumberOfControlPoints\"],\n \"0111\" : [\"SQ\", \"ControlPointSequence\"],\n \"0112\" : [\"IS\", \"ControlPointIndex\"],\n \"0114\" : [\"DS\", \"NominalBeamEnergy\"],\n \"0115\" : [\"DS\", \"DoseRateSet\"],\n \"0116\" : [\"SQ\", \"WedgePositionSequence\"],\n \"0118\" : [\"CS\", \"WedgePosition\"],\n \"011A\" : [\"SQ\", \"BeamLimitingDevicePositionSequence\"],\n \"011C\" : [\"DS\", \"LeafJawPositions\"],\n \"011E\" : [\"DS\", \"GantryAngle\"],\n \"011F\" : [\"CS\", \"GantryRotationDirection\"],\n \"0120\" : [\"DS\", \"BeamLimitingDeviceAngle\"],\n \"0121\" : [\"CS\", \"BeamLimitingDeviceRotationDirection\"],\n \"0122\" : [\"DS\", \"PatientSupportAngle\"],\n \"0123\" : [\"CS\", \"PatientSupportRotationDirection\"],\n \"0124\" : [\"DS\", \"TableTopEccentricAxisDistance\"],\n \"0125\" : [\"DS\", \"TableTopEccentricAngle\"],\n \"0126\" : [\"CS\", \"TableTopEccentricRotationDirection\"],\n \"0128\" : [\"DS\", \"TableTopVerticalPosition\"],\n \"0129\" : [\"DS\", \"TableTopLongitudinalPosition\"],\n \"012A\" : [\"DS\", \"TableTopLateralPosition\"],\n \"012C\" : [\"DS\", \"IsocenterPosition\"],\n \"012E\" : [\"DS\", \"SurfaceEntryPoint\"],\n \"0130\" : [\"DS\", \"SourceToSurfaceDistance\"],\n \"0134\" : [\"DS\", \"CumulativeMetersetWeight\"],\n \"0140\" : [\"FL\", \"TableTopPitchAngle\"],\n \"0142\" : [\"CS\", \"TableTopPitchRotationDirection\"],\n \"0144\" : [\"FL\", \"TableTopRollAngle\"],\n \"0146\" : [\"CS\", \"TableTopRollRotationDirection\"],\n \"0148\" : [\"FL\", \"HeadFixationAngle\"],\n \"014A\" : [\"FL\", \"GantryPitchAngle\"],\n \"014C\" : [\"CS\", \"GantryPitchRotationDirection\"],\n \"014E\" : [\"FL\", \"GantryPitchAngleTolerance\"],\n \"0180\" : [\"SQ\", \"PatientSetupSequence\"],\n \"0182\" : [\"IS\", \"PatientSetupNumber\"],\n \"0183\" : [\"LO\", \"PatientSetupLabel\"],\n \"0184\" : [\"LO\", \"PatientAdditionalPosition\"],\n \"0190\" : [\"SQ\", \"FixationDeviceSequence\"],\n \"0192\" : [\"CS\", \"FixationDeviceType\"],\n \"0194\" : [\"SH\", \"FixationDeviceLabel\"],\n \"0196\" : [\"ST\", \"FixationDeviceDescription\"],\n \"0198\" : [\"SH\", \"FixationDevicePosition\"],\n \"0199\" : [\"FL\", \"FixationDevicePitchAngle\"],\n \"019A\" : [\"FL\", \"FixationDeviceRollAngle\"],\n \"01A0\" : [\"SQ\", \"ShieldingDeviceSequence\"],\n \"01A2\" : [\"CS\", \"ShieldingDeviceType\"],\n \"01A4\" : [\"SH\", \"ShieldingDeviceLabel\"],\n \"01A6\" : [\"ST\", \"ShieldingDeviceDescription\"],\n \"01A8\" : [\"SH\", \"ShieldingDevicePosition\"],\n \"01B0\" : [\"CS\", \"SetupTechnique\"],\n \"01B2\" : [\"ST\", \"SetupTechniqueDescription\"],\n \"01B4\" : [\"SQ\", \"SetupDeviceSequence\"],\n \"01B6\" : [\"CS\", \"SetupDeviceType\"],\n \"01B8\" : [\"SH\", \"SetupDeviceLabel\"],\n \"01BA\" : [\"ST\", \"SetupDeviceDescription\"],\n \"01BC\" : [\"DS\", \"SetupDeviceParameter\"],\n \"01D0\" : [\"ST\", \"SetupReferenceDescription\"],\n \"01D2\" : [\"DS\", \"TableTopVerticalSetupDisplacement\"],\n \"01D4\" : [\"DS\", \"TableTopLongitudinalSetupDisplacement\"],\n \"01D6\" : [\"DS\", \"TableTopLateralSetupDisplacement\"],\n \"0200\" : [\"CS\", \"BrachyTreatmentTechnique\"],\n \"0202\" : [\"CS\", \"BrachyTreatmentType\"],\n \"0206\" : [\"SQ\", \"TreatmentMachineSequence\"],\n \"0210\" : [\"SQ\", \"SourceSequence\"],\n \"0212\" : [\"IS\", \"SourceNumber\"],\n \"0214\" : [\"CS\", \"SourceType\"],\n \"0216\" : [\"LO\", \"SourceManufacturer\"],\n \"0218\" : [\"DS\", \"ActiveSourceDiameter\"],\n \"021A\" : [\"DS\", \"ActiveSourceLength\"],\n \"0222\" : [\"DS\", \"SourceEncapsulationNominalThickness\"],\n \"0224\" : [\"DS\", \"SourceEncapsulationNominalTransmission\"],\n \"0226\" : [\"LO\", \"SourceIsotopeName\"],\n \"0228\" : [\"DS\", \"SourceIsotopeHalfLife\"],\n \"0229\" : [\"CS\", \"SourceStrengthUnits\"],\n \"022A\" : [\"DS\", \"ReferenceAirKermaRate\"],\n \"022B\" : [\"DS\", \"SourceStrength\"],\n \"022C\" : [\"DA\", \"SourceStrengthReferenceDate\"],\n \"022E\" : [\"TM\", \"SourceStrengthReferenceTime\"],\n \"0230\" : [\"SQ\", \"ApplicationSetupSequence\"],\n \"0232\" : [\"CS\", \"ApplicationSetupType\"],\n \"0234\" : [\"IS\", \"ApplicationSetupNumber\"],\n \"0236\" : [\"LO\", \"ApplicationSetupName\"],\n \"0238\" : [\"LO\", \"ApplicationSetupManufacturer\"],\n \"0240\" : [\"IS\", \"TemplateNumber\"],\n \"0242\" : [\"SH\", \"TemplateType\"],\n \"0244\" : [\"LO\", \"TemplateName\"],\n \"0250\" : [\"DS\", \"TotalReferenceAirKerma\"],\n \"0260\" : [\"SQ\", \"BrachyAccessoryDeviceSequence\"],\n \"0262\" : [\"IS\", \"BrachyAccessoryDeviceNumber\"],\n \"0263\" : [\"SH\", \"BrachyAccessoryDeviceID\"],\n \"0264\" : [\"CS\", \"BrachyAccessoryDeviceType\"],\n \"0266\" : [\"LO\", \"BrachyAccessoryDeviceName\"],\n \"026A\" : [\"DS\", \"BrachyAccessoryDeviceNominalThickness\"],\n \"026C\" : [\"DS\", \"BrachyAccessoryDeviceNominalTransmission\"],\n \"0280\" : [\"SQ\", \"ChannelSequence\"],\n \"0282\" : [\"IS\", \"ChannelNumber\"],\n \"0284\" : [\"DS\", \"ChannelLength\"],\n \"0286\" : [\"DS\", \"ChannelTotalTime\"],\n \"0288\" : [\"CS\", \"SourceMovementType\"],\n \"028A\" : [\"IS\", \"NumberOfPulses\"],\n \"028C\" : [\"DS\", \"PulseRepetitionInterval\"],\n \"0290\" : [\"IS\", \"SourceApplicatorNumber\"],\n \"0291\" : [\"SH\", \"SourceApplicatorID\"],\n \"0292\" : [\"CS\", \"SourceApplicatorType\"],\n \"0294\" : [\"LO\", \"SourceApplicatorName\"],\n \"0296\" : [\"DS\", \"SourceApplicatorLength\"],\n \"0298\" : [\"LO\", \"SourceApplicatorManufacturer\"],\n \"029C\" : [\"DS\", \"SourceApplicatorWallNominalThickness\"],\n \"029E\" : [\"DS\", \"SourceApplicatorWallNominalTransmission\"],\n \"02A0\" : [\"DS\", \"SourceApplicatorStepSize\"],\n \"02A2\" : [\"IS\", \"TransferTubeNumber\"],\n \"02A4\" : [\"DS\", \"TransferTubeLength\"],\n \"02B0\" : [\"SQ\", \"ChannelShieldSequence\"],\n \"02B2\" : [\"IS\", \"ChannelShieldNumber\"],\n \"02B3\" : [\"SH\", \"ChannelShieldID\"],\n \"02B4\" : [\"LO\", \"ChannelShieldName\"],\n \"02B8\" : [\"DS\", \"ChannelShieldNominalThickness\"],\n \"02BA\" : [\"DS\", \"ChannelShieldNominalTransmission\"],\n \"02C8\" : [\"DS\", \"FinalCumulativeTimeWeight\"],\n \"02D0\" : [\"SQ\", \"BrachyControlPointSequence\"],\n \"02D2\" : [\"DS\", \"ControlPointRelativePosition\"],\n \"02D4\" : [\"DS\", \"ControlPoint3DPosition\"],\n \"02D6\" : [\"DS\", \"CumulativeTimeWeight\"],\n \"02E0\" : [\"CS\", \"CompensatorDivergence\"],\n \"02E1\" : [\"CS\", \"CompensatorMountingPosition\"],\n \"02E2\" : [\"DS\", \"SourceToCompensatorDistance\"],\n \"02E3\" : [\"FL\", \"TotalCompensatorTrayWaterEquivalentThickness\"],\n \"02E4\" : [\"FL\", \"IsocenterToCompensatorTrayDistance\"],\n \"02E5\" : [\"FL\", \"CompensatorColumnOffset\"],\n \"02E6\" : [\"FL\", \"IsocenterToCompensatorDistances\"],\n \"02E7\" : [\"FL\", \"CompensatorRelativeStoppingPowerRatio\"],\n \"02E8\" : [\"FL\", \"CompensatorMillingToolDiameter\"],\n \"02EA\" : [\"SQ\", \"IonRangeCompensatorSequence\"],\n \"02EB\" : [\"LT\", \"CompensatorDescription\"],\n \"0302\" : [\"IS\", \"RadiationMassNumber\"],\n \"0304\" : [\"IS\", \"RadiationAtomicNumber\"],\n \"0306\" : [\"SS\", \"RadiationChargeState\"],\n \"0308\" : [\"CS\", \"ScanMode\"],\n \"030A\" : [\"FL\", \"VirtualSourceAxisDistances\"],\n \"030C\" : [\"SQ\", \"SnoutSequence\"],\n \"030D\" : [\"FL\", \"SnoutPosition\"],\n \"030F\" : [\"SH\", \"SnoutID\"],\n \"0312\" : [\"IS\", \"NumberOfRangeShifters\"],\n \"0314\" : [\"SQ\", \"RangeShifterSequence\"],\n \"0316\" : [\"IS\", \"RangeShifterNumber\"],\n \"0318\" : [\"SH\", \"RangeShifterID\"],\n \"0320\" : [\"CS\", \"RangeShifterType\"],\n \"0322\" : [\"LO\", \"RangeShifterDescription\"],\n \"0330\" : [\"IS\", \"NumberOfLateralSpreadingDevices\"],\n \"0332\" : [\"SQ\", \"LateralSpreadingDeviceSequence\"],\n \"0334\" : [\"IS\", \"LateralSpreadingDeviceNumber\"],\n \"0336\" : [\"SH\", \"LateralSpreadingDeviceID\"],\n \"0338\" : [\"CS\", \"LateralSpreadingDeviceType\"],\n \"033A\" : [\"LO\", \"LateralSpreadingDeviceDescription\"],\n \"033C\" : [\"FL\", \"LateralSpreadingDeviceWaterEquivalentThickness\"],\n \"0340\" : [\"IS\", \"NumberOfRangeModulators\"],\n \"0342\" : [\"SQ\", \"RangeModulatorSequence\"],\n \"0344\" : [\"IS\", \"RangeModulatorNumber\"],\n \"0346\" : [\"SH\", \"RangeModulatorID\"],\n \"0348\" : [\"CS\", \"RangeModulatorType\"],\n \"034A\" : [\"LO\", \"RangeModulatorDescription\"],\n \"034C\" : [\"SH\", \"BeamCurrentModulationID\"],\n \"0350\" : [\"CS\", \"PatientSupportType\"],\n \"0352\" : [\"SH\", \"PatientSupportID\"],\n \"0354\" : [\"LO\", \"PatientSupportAccessoryCode\"],\n \"0356\" : [\"FL\", \"FixationLightAzimuthalAngle\"],\n \"0358\" : [\"FL\", \"FixationLightPolarAngle\"],\n \"035A\" : [\"FL\", \"MetersetRate\"],\n \"0360\" : [\"SQ\", \"RangeShifterSettingsSequence\"],\n \"0362\" : [\"LO\", \"RangeShifterSetting\"],\n \"0364\" : [\"FL\", \"IsocenterToRangeShifterDistance\"],\n \"0366\" : [\"FL\", \"RangeShifterWaterEquivalentThickness\"],\n \"0370\" : [\"SQ\", \"LateralSpreadingDeviceSettingsSequence\"],\n \"0372\" : [\"LO\", \"LateralSpreadingDeviceSetting\"],\n \"0374\" : [\"FL\", \"IsocenterToLateralSpreadingDeviceDistance\"],\n \"0380\" : [\"SQ\", \"RangeModulatorSettingsSequence\"],\n \"0382\" : [\"FL\", \"RangeModulatorGatingStartValue\"],\n \"0384\" : [\"FL\", \"RangeModulatorGatingStopValue\"],\n \"0386\" : [\"FL\", \"RangeModulatorGatingStartWaterEquivalentThickness\"],\n \"0388\" : [\"FL\", \"RangeModulatorGatingStopWaterEquivalentThickness\"],\n \"038A\" : [\"FL\", \"IsocenterToRangeModulatorDistance\"],\n \"0390\" : [\"SH\", \"ScanSpotTuneID\"],\n \"0392\" : [\"IS\", \"NumberOfScanSpotPositions\"],\n \"0394\" : [\"FL\", \"ScanSpotPositionMap\"],\n \"0396\" : [\"FL\", \"ScanSpotMetersetWeights\"],\n \"0398\" : [\"FL\", \"ScanningSpotSize\"],\n \"039A\" : [\"IS\", \"NumberOfPaintings\"],\n \"03A0\" : [\"SQ\", \"IonToleranceTableSequence\"],\n \"03A2\" : [\"SQ\", \"IonBeamSequence\"],\n \"03A4\" : [\"SQ\", \"IonBeamLimitingDeviceSequence\"],\n \"03A6\" : [\"SQ\", \"IonBlockSequence\"],\n \"03A8\" : [\"SQ\", \"IonControlPointSequence\"],\n \"03AA\" : [\"SQ\", \"IonWedgeSequence\"],\n \"03AC\" : [\"SQ\", \"IonWedgePositionSequence\"],\n \"0401\" : [\"SQ\", \"ReferencedSetupImageSequence\"],\n \"0402\" : [\"ST\", \"SetupImageComment\"],\n \"0410\" : [\"SQ\", \"MotionSynchronizationSequence\"],\n \"0412\" : [\"FL\", \"ControlPointOrientation\"],\n \"0420\" : [\"SQ\", \"GeneralAccessorySequence\"],\n \"0421\" : [\"SH\", \"GeneralAccessoryID\"],\n \"0422\" : [\"ST\", \"GeneralAccessoryDescription\"],\n \"0423\" : [\"CS\", \"GeneralAccessoryType\"],\n \"0424\" : [\"IS\", \"GeneralAccessoryNumber\"],\n \"0431\" : [\"SQ\", \"ApplicatorGeometrySequence\"],\n \"0432\" : [\"CS\", \"ApplicatorApertureShape\"],\n \"0433\" : [\"FL\", \"ApplicatorOpening\"],\n \"0434\" : [\"FL\", \"ApplicatorOpeningX\"],\n \"0435\" : [\"FL\", \"ApplicatorOpeningY\"],\n \"0436\" : [\"FL\", \"SourceToApplicatorMountingPositionDistance\"]\n },\n \"300C\" : {\n \"0002\" : [\"SQ\", \"ReferencedRTPlanSequence\"],\n \"0004\" : [\"SQ\", \"ReferencedBeamSequence\"],\n \"0006\" : [\"IS\", \"ReferencedBeamNumber\"],\n \"0007\" : [\"IS\", \"ReferencedReferenceImageNumber\"],\n \"0008\" : [\"DS\", \"StartCumulativeMetersetWeight\"],\n \"0009\" : [\"DS\", \"EndCumulativeMetersetWeight\"],\n \"000A\" : [\"SQ\", \"ReferencedBrachyApplicationSetupSequence\"],\n \"000C\" : [\"IS\", \"ReferencedBrachyApplicationSetupNumber\"],\n \"000E\" : [\"IS\", \"ReferencedSourceNumber\"],\n \"0020\" : [\"SQ\", \"ReferencedFractionGroupSequence\"],\n \"0022\" : [\"IS\", \"ReferencedFractionGroupNumber\"],\n \"0040\" : [\"SQ\", \"ReferencedVerificationImageSequence\"],\n \"0042\" : [\"SQ\", \"ReferencedReferenceImageSequence\"],\n \"0050\" : [\"SQ\", \"ReferencedDoseReferenceSequence\"],\n \"0051\" : [\"IS\", \"ReferencedDoseReferenceNumber\"],\n \"0055\" : [\"SQ\", \"BrachyReferencedDoseReferenceSequence\"],\n \"0060\" : [\"SQ\", \"ReferencedStructureSetSequence\"],\n \"006A\" : [\"IS\", \"ReferencedPatientSetupNumber\"],\n \"0080\" : [\"SQ\", \"ReferencedDoseSequence\"],\n \"00A0\" : [\"IS\", \"ReferencedToleranceTableNumber\"],\n \"00B0\" : [\"SQ\", \"ReferencedBolusSequence\"],\n \"00C0\" : [\"IS\", \"ReferencedWedgeNumber\"],\n \"00D0\" : [\"IS\", \"ReferencedCompensatorNumber\"],\n \"00E0\" : [\"IS\", \"ReferencedBlockNumber\"],\n \"00F0\" : [\"IS\", \"ReferencedControlPointIndex\"],\n \"00F2\" : [\"SQ\", \"ReferencedControlPointSequence\"],\n \"00F4\" : [\"IS\", \"ReferencedStartControlPointIndex\"],\n \"00F6\" : [\"IS\", \"ReferencedStopControlPointIndex\"],\n \"0100\" : [\"IS\", \"ReferencedRangeShifterNumber\"],\n \"0102\" : [\"IS\", \"ReferencedLateralSpreadingDeviceNumber\"],\n \"0104\" : [\"IS\", \"ReferencedRangeModulatorNumber\"]\n },\n \"300E\" : {\n \"0002\" : [\"CS\", \"ApprovalStatus\"],\n \"0004\" : [\"DA\", \"ReviewDate\"],\n \"0005\" : [\"TM\", \"ReviewTime\"],\n \"0008\" : [\"PN\", \"ReviewerName\"]\n },\n \"4000\" : {\n \"0010\" : [\"LT\", \"Arbitrary\"],\n \"4000\" : [\"LT\", \"TextComments\"]\n },\n \"4008\" : {\n \"0040\" : [\"SH\", \"ResultsID\"],\n \"0042\" : [\"LO\", \"ResultsIDIssuer\"],\n \"0050\" : [\"SQ\", \"ReferencedInterpretationSequence\"],\n \"00FF\" : [\"CS\", \"ReportProductionStatusTrial\"],\n \"0100\" : [\"DA\", \"InterpretationRecordedDate\"],\n \"0101\" : [\"TM\", \"InterpretationRecordedTime\"],\n \"0102\" : [\"PN\", \"InterpretationRecorder\"],\n \"0103\" : [\"LO\", \"ReferenceToRecordedSound\"],\n \"0108\" : [\"DA\", \"InterpretationTranscriptionDate\"],\n \"0109\" : [\"TM\", \"InterpretationTranscriptionTime\"],\n \"010A\" : [\"PN\", \"InterpretationTranscriber\"],\n \"010B\" : [\"ST\", \"InterpretationText\"],\n \"010C\" : [\"PN\", \"InterpretationAuthor\"],\n \"0111\" : [\"SQ\", \"InterpretationApproverSequence\"],\n \"0112\" : [\"DA\", \"InterpretationApprovalDate\"],\n \"0113\" : [\"TM\", \"InterpretationApprovalTime\"],\n \"0114\" : [\"PN\", \"PhysicianApprovingInterpretation\"],\n \"0115\" : [\"LT\", \"InterpretationDiagnosisDescription\"],\n \"0117\" : [\"SQ\", \"InterpretationDiagnosisCodeSequence\"],\n \"0118\" : [\"SQ\", \"ResultsDistributionListSequence\"],\n \"0119\" : [\"PN\", \"DistributionName\"],\n \"011A\" : [\"LO\", \"DistributionAddress\"],\n \"0200\" : [\"SH\", \"InterpretationID\"],\n \"0202\" : [\"LO\", \"InterpretationIDIssuer\"],\n \"0210\" : [\"CS\", \"InterpretationTypeID\"],\n \"0212\" : [\"CS\", \"InterpretationStatusID\"],\n \"0300\" : [\"ST\", \"Impressions\"],\n \"4000\" : [\"ST\", \"ResultsComments\"]\n },\n \"4010\" : {\n \"0001\" : [\"CS\", \"LowEnergyDetectors\"],\n \"0002\" : [\"CS\", \"HighEnergyDetectors\"],\n \"0004\" : [\"SQ\", \"DetectorGeometrySequence\"],\n \"1001\" : [\"SQ\", \"ThreatROIVoxelSequence\"],\n \"1004\" : [\"FL\", \"ThreatROIBase\"],\n \"1005\" : [\"FL\", \"ThreatROIExtents\"],\n \"1006\" : [\"OB\", \"ThreatROIBitmap\"],\n \"1007\" : [\"SH\", \"RouteSegmentID\"],\n \"1008\" : [\"CS\", \"GantryType\"],\n \"1009\" : [\"CS\", \"OOIOwnerType\"],\n \"100A\" : [\"SQ\", \"RouteSegmentSequence\"],\n \"1010\" : [\"US\", \"PotentialThreatObjectID\"],\n \"1011\" : [\"SQ\", \"ThreatSequence\"],\n \"1012\" : [\"CS\", \"ThreatCategory\"],\n \"1013\" : [\"LT\", \"ThreatCategoryDescription\"],\n \"1014\" : [\"CS\", \"ATDAbilityAssessment\"],\n \"1015\" : [\"CS\", \"ATDAssessmentFlag\"],\n \"1016\" : [\"FL\", \"ATDAssessmentProbability\"],\n \"1017\" : [\"FL\", \"Mass\"],\n \"1018\" : [\"FL\", \"Density\"],\n \"1019\" : [\"FL\", \"ZEffective\"],\n \"101A\" : [\"SH\", \"BoardingPassID\"],\n \"101B\" : [\"FL\", \"CenterOfMass\"],\n \"101C\" : [\"FL\", \"CenterOfPTO\"],\n \"101D\" : [\"FL\", \"BoundingPolygon\"],\n \"101E\" : [\"SH\", \"RouteSegmentStartLocationID\"],\n \"101F\" : [\"SH\", \"RouteSegmentEndLocationID\"],\n \"1020\" : [\"CS\", \"RouteSegmentLocationIDType\"],\n \"1021\" : [\"CS\", \"AbortReason\"],\n \"1023\" : [\"FL\", \"VolumeOfPTO\"],\n \"1024\" : [\"CS\", \"AbortFlag\"],\n \"1025\" : [\"DT\", \"RouteSegmentStartTime\"],\n \"1026\" : [\"DT\", \"RouteSegmentEndTime\"],\n \"1027\" : [\"CS\", \"TDRType\"],\n \"1028\" : [\"CS\", \"InternationalRouteSegment\"],\n \"1029\" : [\"LO\", \"ThreatDetectionAlgorithmandVersion\"],\n \"102A\" : [\"SH\", \"AssignedLocation\"],\n \"102B\" : [\"DT\", \"AlarmDecisionTime\"],\n \"1031\" : [\"CS\", \"AlarmDecision\"],\n \"1033\" : [\"US\", \"NumberOfTotalObjects\"],\n \"1034\" : [\"US\", \"NumberOfAlarmObjects\"],\n \"1037\" : [\"SQ\", \"PTORepresentationSequence\"],\n \"1038\" : [\"SQ\", \"ATDAssessmentSequence\"],\n \"1039\" : [\"CS\", \"TIPType\"],\n \"103A\" : [\"CS\", \"DICOSVersion\"],\n \"1041\" : [\"DT\", \"OOIOwnerCreationTime\"],\n \"1042\" : [\"CS\", \"OOIType\"],\n \"1043\" : [\"FL\", \"OOISize\"],\n \"1044\" : [\"CS\", \"AcquisitionStatus\"],\n \"1045\" : [\"SQ\", \"BasisMaterialsCodeSequence\"],\n \"1046\" : [\"CS\", \"PhantomType\"],\n \"1047\" : [\"SQ\", \"OOIOwnerSequence\"],\n \"1048\" : [\"CS\", \"ScanType\"],\n \"1051\" : [\"LO\", \"ItineraryID\"],\n \"1052\" : [\"SH\", \"ItineraryIDType\"],\n \"1053\" : [\"LO\", \"ItineraryIDAssigningAuthority\"],\n \"1054\" : [\"SH\", \"RouteID\"],\n \"1055\" : [\"SH\", \"RouteIDAssigningAuthority\"],\n \"1056\" : [\"CS\", \"InboundArrivalType\"],\n \"1058\" : [\"SH\", \"CarrierID\"],\n \"1059\" : [\"CS\", \"CarrierIDAssigningAuthority\"],\n \"1060\" : [\"FL\", \"SourceOrientation\"],\n \"1061\" : [\"FL\", \"SourcePosition\"],\n \"1062\" : [\"FL\", \"BeltHeight\"],\n \"1064\" : [\"SQ\", \"AlgorithmRoutingCodeSequence\"],\n \"1067\" : [\"CS\", \"TransportClassification\"],\n \"1068\" : [\"LT\", \"OOITypeDescriptor\"],\n \"1069\" : [\"FL\", \"TotalProcessingTime\"],\n \"106C\" : [\"OB\", \"DetectorCalibrationData\"]\n }\n};\n\n\n\n/*** Static Methods ***/\n\n/**\n * Returns the VR for the specified group and element.\n * @param {number} group\n * @param {number} element\n * @returns {string}\n */\ndaikon.Dictionary.getVR = function (group, element) {\n var vr, elementData, groupData;\n\n groupData = daikon.Dictionary.dict[daikon.Utils.dec2hex(group)];\n if (groupData) {\n elementData = groupData[daikon.Utils.dec2hex(element)];\n if (elementData) {\n vr = elementData[0];\n } else if (element === 0) {\n vr = 'UL';\n }\n }\n\n if (!vr) {\n groupData = daikon.Dictionary.dictPrivate[daikon.Utils.dec2hex(group)];\n if (groupData) {\n elementData = groupData[daikon.Utils.dec2hex(element)];\n if (elementData) {\n vr = elementData[0];\n }\n }\n }\n\n if (!vr) {\n vr = 'OB';\n }\n\n return vr;\n};\n\n\n\n/**\n * Returns the description for the specified group and element.\n * @param {number} group\n * @param {number} element\n * @returns {string}\n */\ndaikon.Dictionary.getDescription = function (group, element) {\n var des, elementData, groupData;\n\n groupData = daikon.Dictionary.dict[daikon.Utils.dec2hex(group)];\n if (groupData) {\n elementData = groupData[daikon.Utils.dec2hex(element)];\n if (elementData) {\n des = elementData[1];\n } else if (element === 0) {\n des = (\"Group \" + daikon.Utils.dec2hex(group) + \" Length\");\n }\n }\n\n if (!des) {\n groupData = daikon.Dictionary.dictPrivate[daikon.Utils.dec2hex(group)];\n if (groupData) {\n elementData = groupData[daikon.Utils.dec2hex(element)];\n if (elementData) {\n des = elementData[1];\n }\n }\n }\n\n if (!des) {\n des = 'PrivateData';\n }\n\n return des;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Dictionary;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/dictionary.js\n// module id = 24\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Tag = daikon.Tag || ((typeof require !== 'undefined') ? require('./tag.js') : null);\ndaikon.CompressionUtils = daikon.CompressionUtils || ((typeof require !== 'undefined') ? require('./compression-utils.js') : null);\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\ndaikon.RLE = daikon.RLE || ((typeof require !== 'undefined') ? require('./rle.js') : null);\n\nvar jpeg = ((typeof require !== 'undefined') ? require('jpeg-lossless-decoder-js') : null);\nvar JpegDecoder = JpegDecoder || ((typeof require !== 'undefined') ? require('../lib/jpeg-baseline.js').JpegImage : null);\nvar JpxImage = JpxImage || ((typeof require !== 'undefined') ? require('../lib/jpx.js') : null);\nvar JpegLSDecoder = JpegLSDecoder || ((typeof require !== 'undefined') ? require('../lib/jpeg-ls.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Image constructor.\n * @property {object} tags - a map of tag id to tag (see daikon.Tag.createId)\n * @property {object} tagsFlat - a flattened map of tags\n * @type {Function}\n */\ndaikon.Image = daikon.Image || function () {\n this.tags = {};\n this.tagsFlat = {};\n this.littleEndian = false;\n this.index = -1;\n this.decompressed = false;\n this.privateDataAll = null;\n this.convertedPalette = false;\n};\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Image.SLICE_DIRECTION_UNKNOWN = -1;\ndaikon.Image.SLICE_DIRECTION_AXIAL = 2;\ndaikon.Image.SLICE_DIRECTION_CORONAL = 1;\ndaikon.Image.SLICE_DIRECTION_SAGITTAL = 0;\ndaikon.Image.SLICE_DIRECTION_OBLIQUE = 3;\ndaikon.Image.OBLIQUITY_THRESHOLD_COSINE_VALUE = 0.8;\n\ndaikon.Image.BYTE_TYPE_UNKNOWN = 0;\ndaikon.Image.BYTE_TYPE_BINARY = 1;\ndaikon.Image.BYTE_TYPE_INTEGER = 2;\ndaikon.Image.BYTE_TYPE_INTEGER_UNSIGNED = 3;\ndaikon.Image.BYTE_TYPE_FLOAT = 4;\ndaikon.Image.BYTE_TYPE_COMPLEX = 5;\ndaikon.Image.BYTE_TYPE_RGB = 6;\n\n\n/*** Static Methods ***/\n\ndaikon.Image.skipPaletteConversion = false;\n\n\ndaikon.Image.getSingleValueSafely = function (tag, index) {\n if (tag && tag.value) {\n return tag.value[index];\n }\n\n return null;\n};\n\n\n\ndaikon.Image.getValueSafely = function (tag) {\n if (tag) {\n return tag.value;\n }\n\n return null;\n};\n\n\n\n// originally from: http://public.kitware.com/pipermail/insight-users/2005-March/012246.html\ndaikon.Image.getMajorAxisFromPatientRelativeDirectionCosine = function(x, y, z) {\n var axis, orientationX, orientationY, orientationZ, absX, absY, absZ;\n\n orientationX = (x < 0) ? \"R\" : \"L\";\n orientationY = (y < 0) ? \"A\" : \"P\";\n orientationZ = (z < 0) ? \"F\" : \"H\";\n\n absX = Math.abs(x);\n absY = Math.abs(y);\n absZ = Math.abs(z);\n\n // The tests here really don't need to check the other dimensions,\n // just the threshold, since the sum of the squares should be == 1.0\n // but just in case ...\n\n if ((absX > daikon.Image.OBLIQUITY_THRESHOLD_COSINE_VALUE) && (absX > absY) && (absX > absZ)) {\n axis = orientationX;\n } else if ((absY > daikon.Image.OBLIQUITY_THRESHOLD_COSINE_VALUE) && (absY > absX) && (absY > absZ)) {\n axis = orientationY;\n } else if ((absZ > daikon.Image.OBLIQUITY_THRESHOLD_COSINE_VALUE) && (absZ > absX) && (absZ > absY)) {\n axis = orientationZ;\n } else {\n axis = null;\n }\n\n return axis;\n};\n\n\n/*** Prototype Methods ***/\n\n/**\n * Returns the number of columns.\n * @returns {number}\n */\ndaikon.Image.prototype.getCols = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_COLS[0], daikon.Tag.TAG_COLS[1]), 0);\n};\n\n\n\n/**\n * Returns the number of rows.\n * @returns {number}\n */\ndaikon.Image.prototype.getRows = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_ROWS[0], daikon.Tag.TAG_ROWS[1]), 0);\n};\n\n\n\n/**\n * Returns the series description.\n * @returns {string}\n */\ndaikon.Image.prototype.getSeriesDescription = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SERIES_DESCRIPTION[0], daikon.Tag.TAG_SERIES_DESCRIPTION[1]), 0);\n};\n\n\n\n/**\n * Returns the series instance UID.\n * @returns {string}\n */\ndaikon.Image.prototype.getSeriesInstanceUID = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SERIES_INSTANCE_UID[0], daikon.Tag.TAG_SERIES_INSTANCE_UID[1]), 0);\n};\n\n\n\n/**\n * Returns the series number.\n * @returns {number}\n */\ndaikon.Image.prototype.getSeriesNumber = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SERIES_NUMBER[0], daikon.Tag.TAG_SERIES_NUMBER[1]), 0);\n};\n\n\n\n/**\n * Returns the echo number.\n * @returns {number}\n */\ndaikon.Image.prototype.getEchoNumber = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_ECHO_NUMBER[0], daikon.Tag.TAG_ECHO_NUMBER[1]), 0);\n};\n\n\n\n/**\n * Returns the image position.\n * @return {number[]}\n */\ndaikon.Image.prototype.getImagePosition = function () {\n return daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_POSITION[0], daikon.Tag.TAG_IMAGE_POSITION[1]));\n};\n\n/**\n * Returns the image axis directions\n * @return {number[]}\n */\ndaikon.Image.prototype.getImageDirections = function () {\n return daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_ORIENTATION[0], daikon.Tag.TAG_IMAGE_ORIENTATION[1]))\n};\n\n\n/**\n * Returns the image position value by index.\n * @param {number} sliceDir - the index\n * @returns {number}\n */\ndaikon.Image.prototype.getImagePositionSliceDir = function (sliceDir) {\n var imagePos = daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_POSITION[0], daikon.Tag.TAG_IMAGE_POSITION[1]));\n if (imagePos) {\n if (sliceDir >= 0) {\n return imagePos[sliceDir];\n }\n }\n\n return 0;\n};\n\n\n/**\n * Returns the modality\n * @returns {string}\n */\ndaikon.Image.prototype.getModality = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_MODALITY[0], daikon.Tag.TAG_MODALITY[1]), 0);\n};\n\n\n/**\n * Returns the slice location.\n * @returns {number}\n */\ndaikon.Image.prototype.getSliceLocation = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SLICE_LOCATION[0], daikon.Tag.TAG_SLICE_LOCATION[1]), 0);\n};\n\n\n\n/**\n * Returns the slice location vector.\n * @returns {number[]}\n */\ndaikon.Image.prototype.getSliceLocationVector = function () {\n return daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_SLICE_LOCATION_VECTOR[0], daikon.Tag.TAG_SLICE_LOCATION_VECTOR[1]));\n};\n\n\n\n/**\n * Returns the image number.\n * @returns {number}\n */\ndaikon.Image.prototype.getImageNumber = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_NUM[0], daikon.Tag.TAG_IMAGE_NUM[1]), 0);\n};\n\n\n/**\n * Returns the temporal position.\n * @returns {number}\n */\ndaikon.Image.prototype.getTemporalPosition = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_TEMPORAL_POSITION[0], daikon.Tag.TAG_TEMPORAL_POSITION[1]), 0);\n};\n\n\n/**\n * Returns the temporal number.\n * @returns {number}\n */\ndaikon.Image.prototype.getTemporalNumber = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_NUMBER_TEMPORAL_POSITIONS[0], daikon.Tag.TAG_NUMBER_TEMPORAL_POSITIONS[1]), 0);\n};\n\n\n/**\n * Returns the slice gap.\n * @returns {number}\n */\ndaikon.Image.prototype.getSliceGap = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SLICE_GAP[0], daikon.Tag.TAG_SLICE_GAP[1]), 0);\n};\n\n\n/**\n * Returns the slice thickness.\n * @returns {number}\n */\ndaikon.Image.prototype.getSliceThickness = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SLICE_THICKNESS[0], daikon.Tag.TAG_SLICE_THICKNESS[1]), 0);\n};\n\n\n/**\n * Returns the image maximum.\n * @returns {number}\n */\ndaikon.Image.prototype.getImageMax = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_MAX[0], daikon.Tag.TAG_IMAGE_MAX[1]), 0);\n};\n\n\n/**\n * Returns the image minimum.\n * @returns {number}\n */\ndaikon.Image.prototype.getImageMin = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_MIN[0], daikon.Tag.TAG_IMAGE_MIN[1]), 0);\n};\n\n\n/**\n * Returns the rescale slope.\n * @returns {number}\n */\ndaikon.Image.prototype.getDataScaleSlope = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_DATA_SCALE_SLOPE[0], daikon.Tag.TAG_DATA_SCALE_SLOPE[1]), 0);\n};\n\n\n/**\n * Returns the rescale intercept.\n * @returns {number}\n */\ndaikon.Image.prototype.getDataScaleIntercept = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_DATA_SCALE_INTERCEPT[0], daikon.Tag.TAG_DATA_SCALE_INTERCEPT[1]), 0);\n};\n\n\n\ndaikon.Image.prototype.getDataScaleElscint = function () {\n var scale = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_DATA_SCALE_ELSCINT[0], daikon.Tag.TAG_DATA_SCALE_ELSCINT[1]), 0);\n\n if (!scale) {\n scale = 1;\n }\n\n var bandwidth = this.getPixelBandwidth();\n scale = Math.sqrt(bandwidth) / (10 * scale);\n\n if (scale <= 0) {\n scale = 1;\n }\n\n return scale;\n};\n\n\n/**\n * Returns the window width.\n * @returns {number}\n */\ndaikon.Image.prototype.getWindowWidth = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_WINDOW_WIDTH[0], daikon.Tag.TAG_WINDOW_WIDTH[1]), 0);\n};\n\n\n/**\n * Returns the window center.\n * @returns {number}\n */\ndaikon.Image.prototype.getWindowCenter = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_WINDOW_CENTER[0], daikon.Tag.TAG_WINDOW_CENTER[1]), 0);\n};\n\n\n\ndaikon.Image.prototype.getPixelBandwidth = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PIXEL_BANDWIDTH[0], daikon.Tag.TAG_PIXEL_BANDWIDTH[1]), 0);\n};\n\n\n\ndaikon.Image.prototype.getSeriesId = function () {\n var des = this.getSeriesDescription();\n var uid = this.getSeriesInstanceUID();\n var num = this.getSeriesNumber();\n var echo = this.getEchoNumber();\n var orientation = this.getOrientation();\n var cols = this.getCols();\n var rows = this.getRows();\n\n var id = \"\";\n\n if (des !== null) {\n id += (\" \" + des);\n }\n\n if (uid !== null) {\n id += (\" \" + uid);\n }\n\n if (num !== null) {\n id += (\" \" + num);\n }\n\n if (echo !== null) {\n id += (\" \" + echo);\n }\n\n if (orientation !== null) {\n id += (\" \" + orientation);\n }\n\n id += (\" (\" + cols + \" x \" + rows + \")\");\n\n return id;\n};\n\n\n/**\n * Returns the pixel spacing.\n * @returns {number[]}\n */\ndaikon.Image.prototype.getPixelSpacing = function () {\n return daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_PIXEL_SPACING[0], daikon.Tag.TAG_PIXEL_SPACING[1]));\n};\n\n\n/**\n * Returns the image type.\n * @returns {string[]}\n */\ndaikon.Image.prototype.getImageType = function () {\n return daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_TYPE[0], daikon.Tag.TAG_IMAGE_TYPE[1]));\n};\n\n\n/**\n * Returns the number of bits stored.\n * @returns {number}\n */\ndaikon.Image.prototype.getBitsStored = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_BITS_STORED[0], daikon.Tag.TAG_BITS_STORED[1]), 0);\n};\n\n\n/**\n * Returns the number of bits allocated.\n * @returns {number}\n */\ndaikon.Image.prototype.getBitsAllocated = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_BITS_ALLOCATED[0], daikon.Tag.TAG_BITS_ALLOCATED[1]), 0);\n};\n\n\n/**\n * Returns the frame time.\n * @returns {number}\n */\ndaikon.Image.prototype.getFrameTime = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_FRAME_TIME[0], daikon.Tag.TAG_FRAME_TIME[1]), 0);\n};\n\n\n/**\n * Returns the acquisition matrix (e.g., \"mosaic\" data).\n * @returns {number[]}\n */\ndaikon.Image.prototype.getAcquisitionMatrix = function () {\n var mat, matPrivate, start, end, str;\n\n mat = [0, 0];\n mat[0] = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_ACQUISITION_MATRIX[0], daikon.Tag.TAG_ACQUISITION_MATRIX[1]), 0);\n\n if (this.privateDataAll === null) {\n this.privateDataAll = this.getAllInterpretedPrivateData();\n }\n\n if ((this.privateDataAll !== null) && (this.privateDataAll.length > 0)) {\n start = this.privateDataAll.indexOf(\"AcquisitionMatrixText\");\n if (start !== -1) {\n\n end = this.privateDataAll.indexOf('\\n', start);\n\n if (end !== -1) {\n str = this.privateDataAll.substring(start, end);\n matPrivate = str.match(/\\d+/g);\n\n if ((matPrivate !== null) && (matPrivate.length === 2)) {\n mat[0] = matPrivate[0];\n mat[1] = matPrivate[1];\n } else if ((matPrivate !== null) && (matPrivate.length === 1)) {\n mat[0] = matPrivate[0];\n }\n }\n }\n }\n\n if (mat[1] === 0) {\n mat[1] = mat[0];\n }\n\n return mat;\n};\n\n\n/**\n * Returns the TR.\n * @returns {number}\n */\ndaikon.Image.prototype.getTR = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_TR, daikon.Tag.TAG_TR[1]), 0);\n};\n\n\n\ndaikon.Image.prototype.putTag = function (tag) {\n if (this.tags[tag.id] && this.tags[tag.id].value[0] !== tag.value[0]) {\n return;\n }\n this.tags[tag.id] = tag;\n this.putFlattenedTag(this.tagsFlat, tag);\n};\n\n\n\ndaikon.Image.prototype.putFlattenedTag = function (tags, tag) {\n var ctr;\n\n if (tag.sublist) {\n for (ctr = 0; ctr < tag.value.length; ctr += 1) {\n this.putFlattenedTag(tags, tag.value[ctr]);\n }\n } else {\n if (!tags[tag.id]) {\n tags[tag.id] = tag;\n }\n }\n};\n\n\n/**\n * Returns a tag matching the specified group and element.\n * @param {number} group\n * @param {number} element\n * @returns {daikon.Tag}\n */\ndaikon.Image.prototype.getTag = function (group, element) {\n var tagId = daikon.Tag.createId(group, element);\n\n if (this.tags[tagId]) {\n return this.tags[tagId];\n }\n\n return this.tagsFlat[tagId];\n};\n\n\n/**\n * Returns the pixel data tag.\n * @returns {daikon.Tag}\n */\ndaikon.Image.prototype.getPixelData = function () {\n return this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])];\n};\n\n\n\ndaikon.Image.prototype.getPixelDataBytes = function () {\n if (this.isCompressed()) {\n this.decompress();\n }\n\n if (this.isPalette() && !daikon.Image.skipPaletteConversion) {\n this.convertPalette();\n }\n\n return this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value.buffer;\n};\n\n\n/**\n * Returns the raw pixel data.\n * @returns {ArrayBuffer}\n */\ndaikon.Image.prototype.getRawData = function () {\n return this.getPixelDataBytes();\n};\n\n\n/**\n * Returns interpreted pixel data (considers datatype, byte order, data scales).\n * @param {boolean} asArray - if true, the returned data is a JavaScript Array\n * @param {boolean} asObject - if true, an object is returned with properties: data, min, max, minIndex, maxIndex, numCols, numRows\n * @param {number} frameIndex - if provided, only the desired frame in a multi-frame dataset is returned\n * @returns {Float32Array|Array|object}\n */\ndaikon.Image.prototype.getInterpretedData = function (asArray, asObject, frameIndex) {\n var datatype, numBytes, numElements, dataView, data, ctr, mask, slope, intercept, min, max, value, minIndex,\n maxIndex, littleEndian, rawValue, rawData, allFrames, elementsPerFrame, totalElements, offset, dataCtr;\n allFrames = arguments.length < 3;\n mask = daikon.Utils.createBitMask(this.getBitsAllocated() / 8, this.getBitsStored(),\n this.getDataType() === daikon.Image.BYTE_TYPE_INTEGER_UNSIGNED);\n datatype = this.getPixelRepresentation() ? daikon.Image.BYTE_TYPE_INTEGER : daikon.Image.BYTE_TYPE_INTEGER_UNSIGNED;\n numBytes = this.getBitsAllocated() / 8;\n rawData = this.getRawData();\n dataView = new DataView(rawData);\n totalElements = rawData.byteLength / numBytes;\n elementsPerFrame = totalElements / this.getNumberOfFrames();\n numElements = allFrames ? totalElements : elementsPerFrame;\n offset = allFrames ? 0 : frameIndex * elementsPerFrame;\n slope = this.getDataScaleSlope() || 1;\n intercept = this.getDataScaleIntercept() || 0;\n min = daikon.Utils.MAX_VALUE;\n max = daikon.Utils.MIN_VALUE;\n minIndex = -1;\n maxIndex = -1;\n littleEndian = this.littleEndian;\n\n if (asArray) {\n data = new Array(numElements);\n } else {\n data = new Float32Array(numElements);\n }\n var getWord;\n if (datatype === daikon.Image.BYTE_TYPE_INTEGER) {\n if (numBytes === 1) {\n getWord = dataView.getInt8.bind(dataView)\n } else if (numBytes === 2) {\n getWord = dataView.getInt16.bind(dataView)\n }\n } else if (datatype === daikon.Image.BYTE_TYPE_INTEGER_UNSIGNED) {\n if (numBytes === 1) {\n getWord = dataView.getUint8.bind(dataView)\n } else if (numBytes === 2) {\n getWord = dataView.getUint16.bind(dataView)\n }\n }\n \n // invert pixel values if INVERTED or MONOCHROME1\n var invert = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_LUT_SHAPE[0], daikon.Tag.TAG_LUT_SHAPE[1]), 0) === \"INVERSE\";\n invert = invert || this.getPhotometricInterpretation() === \"MONOCHROME1\";\n if (invert) {\n var maxVal = Math.pow(2, this.getBitsStored()) - 1;\n var minVal = 0;\n if (datatype === daikon.Image.BYTE_TYPE_INTEGER) {\n maxVal /= 2;\n minVal = -maxVal;\n }\n var originalGetWord = getWord;\n getWord = function(offset, endian) { \n var val = maxVal - originalGetWord(offset, endian);\n return Math.min(maxVal, Math.max(minVal, val)); \n }\n }\n\n for (ctr = offset, dataCtr = 0; dataCtr < numElements; ctr++, dataCtr++) {\n rawValue = getWord(ctr * numBytes, littleEndian);\n\n value = ((rawValue & mask) * slope) + intercept;\n data[dataCtr] = value;\n\n if (value < min) {\n min = value;\n minIndex = dataCtr;\n }\n\n if (value > max) {\n max = value;\n maxIndex = dataCtr;\n }\n }\n\n if (asObject) {\n return {data: data, min: min, minIndex: minIndex, max: max, maxIndex: maxIndex, numCols: this.getCols(),\n numRows: this.getRows()};\n }\n \n return data;\n};\n\n\n\ndaikon.Image.prototype.convertPalette = function () {\n var data, reds, greens, blues, rgb, numBytes, numElements, ctr, index, rVal, gVal, bVal;\n\n data = this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value;\n\n reds = this.getPalleteValues(daikon.Tag.TAG_PALETTE_RED);\n greens = this.getPalleteValues(daikon.Tag.TAG_PALETTE_GREEN);\n blues = this.getPalleteValues(daikon.Tag.TAG_PALETTE_BLUE);\n\n if ((reds !== null) && (reds.length > 0) && (greens !== null) && (greens.length > 0) && (blues !== null) &&\n (blues.length > 0) && !this.convertedPalette) {\n rgb = new DataView(new ArrayBuffer(this.getRows() * this.getCols() * this.getNumberOfFrames() * 3));\n numBytes = parseInt(Math.ceil(this.getBitsAllocated() / 8));\n numElements = data.byteLength / numBytes;\n\n if (numBytes === 1) {\n for (ctr = 0; ctr < numElements; ctr += 1) {\n index = data.getUint8(ctr);\n rVal = reds[index];\n gVal = greens[index];\n bVal = blues[index];\n rgb.setUint8((ctr * 3), rVal);\n rgb.setUint8((ctr * 3) + 1, gVal);\n rgb.setUint8((ctr * 3) + 2, bVal);\n }\n } else if (numBytes === 2) {\n for (ctr = 0; ctr < numElements; ctr += 1) {\n index = data.getUint16(ctr * 2);\n rVal = reds[index];\n gVal = greens[index];\n bVal = blues[index];\n rgb.setUint8((ctr * 3), rVal);\n rgb.setUint8((ctr * 3) + 1, gVal);\n rgb.setUint8((ctr * 3) + 2, bVal);\n }\n }\n\n data = rgb;\n this.convertedPalette = true;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = data;\n};\n\n\n\ndaikon.Image.prototype.decompressJPEG = function (jpg) {\n if (this.isCompressedJPEGLossless()) {\n var decoder = new jpeg.lossless.Decoder();\n return decoder.decode(jpg);\n } else if (this.isCompressedJPEGBaseline()) {\n var decoder = new JpegDecoder();\n decoder.parse(new Uint8Array(jpg));\n var width = decoder.width;\n var height = decoder.height;\n\n var decoded;\n if (this.getBitsAllocated() === 8) {\n decoded = decoder.getData(width, height);\n } else if (this.getBitsAllocated() === 16) {\n decoded = decoder.getData16(width, height);\n }\n\n return decoded;\n } else if (this.isCompressedJPEG2000()) {\n var decoder = new JpxImage();\n decoder.parse(new Uint8Array(jpg));\n return decoder.tiles[0].items;\n } else if (this.isCompressedJPEGLS()) {\n var decoder = new JpegLSDecoder();\n return decoder.decodeJPEGLS(new Uint8Array(jpg), this.getDataType() === daikon.Image.BYTE_TYPE_INTEGER);\n }\n};\n\n\n\ndaikon.Image.prototype.decompress = function () {\n var jpegs, rle, decoder, decompressed, numFrames, frameSize, temp, ctr, width, height, numComponents, decoded;\n\n decompressed = null;\n\n if (!this.decompressed) {\n this.decompressed = true;\n\n frameSize = this.getRows() * this.getCols() * parseInt(Math.ceil(this.getBitsAllocated() / 8));\n numFrames = this.getNumberOfFrames();\n\n if (this.isCompressedJPEGLossless()) {\n jpegs = this.getJpegs();\n\n for (ctr = 0; ctr < jpegs.length; ctr+=1) {\n decoder = new jpeg.lossless.Decoder();\n temp = decoder.decode(jpegs[ctr]);\n numComponents = decoder.numComp;\n\n if (decompressed === null) {\n decompressed = new DataView(new ArrayBuffer(frameSize * numFrames * numComponents));\n }\n\n (new Uint8Array(decompressed.buffer)).set(new Uint8Array(temp.buffer), (ctr * frameSize * numComponents));\n temp = null;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = decompressed;\n } else if (this.isCompressedJPEGBaseline()) {\n jpegs = this.getJpegs();\n\n for (ctr = 0; ctr < jpegs.length; ctr+=1) {\n decoder = new JpegDecoder();\n decoder.parse(new Uint8Array(jpegs[ctr]));\n width = decoder.width;\n height = decoder.height;\n numComponents = decoder.components.length;\n\n if (decompressed === null) {\n decompressed = new DataView(new ArrayBuffer(frameSize * numFrames * numComponents));\n }\n\n if (this.getBitsAllocated() === 8) {\n decoded = decoder.getData(width, height);\n } else if (this.getBitsAllocated() === 16) {\n decoded = decoder.getData16(width, height);\n }\n\n daikon.Utils.fillBuffer(decoded, decompressed, (ctr * frameSize * numComponents),\n parseInt(Math.ceil(this.getBitsAllocated() / 8)));\n\n decoded = null;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = decompressed;\n } else if (this.isCompressedJPEG2000()) {\n jpegs = this.getJpegs();\n\n for (ctr = 0; ctr < jpegs.length; ctr+=1) {\n decoder = new JpxImage();\n decoder.parse(new Uint8Array(jpegs[ctr]));\n width = decoder.width;\n height = decoder.height;\n decoded = decoder.tiles[0].items;\n numComponents = decoder.componentsCount;\n\n if (decompressed === null) {\n decompressed = new DataView(new ArrayBuffer(frameSize * numFrames * numComponents));\n }\n\n daikon.Utils.fillBuffer(decoded, decompressed, (ctr * frameSize * numComponents),\n parseInt(Math.ceil(this.getBitsAllocated() / 8)));\n\n decoded = null;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = decompressed;\n } else if (this.isCompressedJPEGLS()) {\n jpegs = this.getJpegs();\n\n for (ctr = 0; ctr < jpegs.length; ctr+=1) {\n decoder = new JpegLSDecoder();\n var decoded = decoder.decodeJPEGLS(new Uint8Array(jpegs[ctr]), this.getDataType() === daikon.Image.BYTE_TYPE_INTEGER);\n width = decoded.columns;\n height = decoded.rows;\n decoded = decoded.pixelData;\n numComponents = this.getNumberOfSamplesPerPixel();\n\n if (decompressed === null) {\n decompressed = new DataView(new ArrayBuffer(frameSize * numFrames * numComponents));\n }\n\n daikon.Utils.fillBuffer(decoded, decompressed, (ctr * frameSize * numComponents),\n parseInt(Math.ceil(this.getBitsAllocated() / 8)));\n\n decoded = null;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = decompressed;\n } else if (this.isCompressedRLE()) {\n rle = this.getRLE();\n\n for (ctr = 0; ctr < rle.length; ctr+=1) {\n decoder = new daikon.RLE();\n temp = decoder.decode(rle[ctr], this.littleEndian, this.getRows() * this.getCols());\n numComponents = (decoder.numSegments === 3 ? 3 : 1);\n\n if (decompressed === null) {\n decompressed = new DataView(new ArrayBuffer(frameSize * numFrames * numComponents));\n }\n\n (new Uint8Array(decompressed.buffer)).set(new Uint8Array(temp.buffer), (ctr * frameSize * numComponents));\n temp = null;\n }\n\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = decompressed;\n }\n }\n};\n\n\n/**\n * Returns true if pixel data is found.\n * @returns {boolean}\n */\ndaikon.Image.prototype.hasPixelData = function () {\n return (this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])] !== undefined);\n};\n\n\n\ndaikon.Image.prototype.clearPixelData = function () {\n this.tags[daikon.Tag.createId(daikon.Tag.TAG_PIXEL_DATA[0], daikon.Tag.TAG_PIXEL_DATA[1])].value = null;\n};\n\n\n/**\n * Returns an orientation string (e.g., XYZ+--).\n * @returns {string}\n */\ndaikon.Image.prototype.getOrientation = function () {\n var orientation = null,\n dirCos = daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_ORIENTATION[0], daikon.Tag.TAG_IMAGE_ORIENTATION[1])),\n ctr,\n spacing,\n rowSpacing,\n swapZ,\n bigRow = 0, bigCol = 0,\n biggest = 0, orient = '';\n\n if (!dirCos || (dirCos.length !== 6)) {\n return null;\n }\n\n spacing = this.getPixelSpacing();\n\n if (!spacing) {\n return null;\n }\n\n rowSpacing = spacing[0];\n swapZ = true;\n\n for (ctr = 0; ctr < 3; ctr += 1) {\n if (Math.abs(dirCos[ctr]) > biggest) {\n biggest = Math.abs(dirCos[ctr]);\n bigRow = ctr;\n }\n }\n\n biggest = 0;\n for (; ctr < 6; ctr += 1) {\n if (Math.abs(dirCos[ctr]) > biggest) {\n biggest = Math.abs(dirCos[ctr]);\n bigCol = ctr;\n }\n }\n\n switch (bigRow) {\n case 0:\n orient += ('X');\n if (bigCol === 4) {\n orient += (\"YZ\");\n } else {\n orient += (\"ZY\");\n }\n break;\n case 1:\n orient += ('Y');\n if (bigCol === 3) {\n orient += (\"XZ\");\n } else {\n orient += (\"ZX\");\n }\n break;\n case 2:\n orient += ('Z');\n if (bigCol === 3) {\n orient += (\"XY\");\n } else {\n orient += (\"YX\");\n }\n break;\n default:\n break;\n }\n\n switch (bigRow) {\n case 0:\n if (dirCos[bigRow] > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n if (bigCol === 4) {\n if (dirCos[bigCol] > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n } else {\n if (dirCos[bigCol] > 0.0) {\n orient += ('+');\n } else {\n orient += ('-');\n }\n }\n break;\n case 1:\n if (dirCos[bigRow] > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n if (bigCol === 3) {\n if (dirCos[bigCol] > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n } else {\n if (dirCos[bigCol] > 0.0) {\n orient += ('+');\n } else {\n orient += ('-');\n }\n }\n break;\n case 2:\n if (dirCos[bigRow] > 0.0) {\n orient += ('+');\n } else {\n orient += ('-');\n }\n //Has to be X or Y so opposite senses\n if (dirCos[bigCol] > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n break;\n default:\n break;\n }\n\n if (rowSpacing === 0.0) {\n orient += ('+');\n orientation = orient;\n } else {\n if (swapZ) {\n switch (orient.charAt(2)) {\n case 'X':\n if (rowSpacing > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n break;\n case 'Y':\n case 'Z':\n if (rowSpacing > 0.0) {\n orient += ('+');\n } else {\n orient += ('-');\n }\n break;\n default:\n break;\n }\n } else {\n switch (orient.charAt(2)) {\n case 'X':\n if (rowSpacing > 0.0) {\n orient += ('+');\n } else {\n orient += ('-');\n }\n break;\n case 'Y':\n case 'Z':\n if (rowSpacing > 0.0) {\n orient += ('-');\n } else {\n orient += ('+');\n }\n break;\n default:\n break;\n }\n }\n\n orientation = orient;\n }\n\n return orientation;\n};\n\n\n/**\n * Returns true if this image is \"mosaic\".\n * @returns {boolean}\n */\ndaikon.Image.prototype.isMosaic = function () {\n var imageType, labeledAsMosaic = false, canReadAsMosaic, ctr, matSize;\n\n imageType = this.getImageType();\n\n if (imageType !== null) {\n for (ctr = 0; ctr < imageType.length; ctr += 1) {\n if (imageType[ctr].toUpperCase().indexOf(\"MOSAIC\") !== -1) {\n labeledAsMosaic = true;\n break;\n }\n }\n }\n\n matSize = this.getAcquisitionMatrix();\n canReadAsMosaic = (matSize[0] > 0) && ((matSize[0] < this.getRows()) || (matSize[1] < this.getCols()));\n return labeledAsMosaic && canReadAsMosaic;\n};\n\n\n/**\n * Returns true if this image uses palette colors.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isPalette = function () {\n var value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PHOTOMETRIC_INTERPRETATION[0], daikon.Tag.TAG_PHOTOMETRIC_INTERPRETATION[1]), 0);\n\n if (value !== null) {\n if (value.toLowerCase().indexOf(\"palette\") !== -1) {\n return true;\n }\n }\n\n return false;\n};\n\n\n\ndaikon.Image.prototype.getMosaicCols = function() {\n return this.getCols() / this.getAcquisitionMatrix()[1];\n};\n\n\n\ndaikon.Image.prototype.getMosaicRows = function() {\n return this.getRows() / this.getAcquisitionMatrix()[0];\n};\n\n\n\ndaikon.Image.prototype.isElscint = function() {\n var tag = this.getTag(daikon.Tag.TAG_DATA_SCALE_ELSCINT[0], daikon.Tag.TAG_DATA_SCALE_ELSCINT[1]);\n return (tag !== undefined);\n};\n\n\n/**\n * Returns true if this image stores compressed data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressed = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG) !== -1) {\n return true;\n } else if (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_RLE) !== -1) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true if this image stores JPEG data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedJPEG = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG) !== -1) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true of this image stores lossless JPEG data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedJPEGLossless = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if ((transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LOSSLESS) !== -1) ||\n (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LOSSLESS_SEL1) !== -1)) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true if this image stores baseline JPEG data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedJPEGBaseline = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if ((transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_BASELINE_8BIT) !== -1) ||\n (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_BASELINE_12BIT) !== -1)) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true if this image stores JPEG2000 data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedJPEG2000 = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if ((transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_2000) !== -1) ||\n (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_2000_LOSSLESS) !== -1)) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true if this image stores JPEG-LS data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedJPEGLS = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if ((transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LS) !== -1) ||\n (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_JPEG_LS_LOSSLESS) !== -1)) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns true if this image stores RLE data.\n * @returns {boolean}\n */\ndaikon.Image.prototype.isCompressedRLE = function() {\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n var transferSyntax = this.getTransferSyntax();\n if (transferSyntax) {\n if (transferSyntax.indexOf(daikon.Parser.TRANSFER_SYNTAX_COMPRESSION_RLE) !== -1) {\n return true;\n }\n }\n\n return false;\n};\n\n\n/**\n * Returns the number of frames.\n * @returns {number}\n */\ndaikon.Image.prototype.getNumberOfFrames = function () {\n var value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_NUMBER_OF_FRAMES[0], daikon.Tag.TAG_NUMBER_OF_FRAMES[1]), 0);\n\n if (value !== null) {\n return value;\n }\n\n return 1;\n};\n\n\n/**\n * Returns the number of samples per pixel.\n * @returns {number}\n */\ndaikon.Image.prototype.getNumberOfSamplesPerPixel = function () {\n var value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SAMPLES_PER_PIXEL[0], daikon.Tag.TAG_SAMPLES_PER_PIXEL[1]), 0);\n\n if (value !== null) {\n return value;\n }\n\n return 1;\n};\n\n\n\ndaikon.Image.prototype.getNumberOfImplicitFrames = function () {\n var pixelData, length, size;\n\n if (this.isCompressed()) {\n return 1;\n }\n\n pixelData = this.getPixelData();\n length = pixelData.offsetEnd - pixelData.offsetValue;\n size = this.getCols() * this.getRows() * (parseInt(this.getBitsAllocated() / 8));\n\n return parseInt(length / size);\n};\n\n\n/**\n * Returns the pixel representation.\n * @returns {number}\n */\ndaikon.Image.prototype.getPixelRepresentation = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PIXEL_REPRESENTATION[0], daikon.Tag.TAG_PIXEL_REPRESENTATION[1]), 0);\n};\n\n\n/**\n * Returns the photometric interpretation.\n * @returns {string}\n */\ndaikon.Image.prototype.getPhotometricInterpretation = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PHOTOMETRIC_INTERPRETATION[0], daikon.Tag.TAG_PHOTOMETRIC_INTERPRETATION[1]), 0);\n};\n\n\n/**\n * Returns the patient name.\n * @returns {string}\n */\ndaikon.Image.prototype.getPatientName = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PATIENT_NAME[0], daikon.Tag.TAG_PATIENT_NAME[1]), 0);\n};\n\n\n/**\n * Returns the patient ID.\n * @returns {string}\n */\ndaikon.Image.prototype.getPatientID = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PATIENT_ID[0], daikon.Tag.TAG_PATIENT_ID[1]), 0);\n};\n\n\n/**\n * Returns the study time.\n * @returns {string}\n */\ndaikon.Image.prototype.getStudyTime = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_STUDY_TIME[0], daikon.Tag.TAG_STUDY_TIME[1]), 0);\n};\n\n\n/**\n * Returns the transfer syntax.\n * @returns {string}\n */\ndaikon.Image.prototype.getTransferSyntax = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_TRANSFER_SYNTAX[0], daikon.Tag.TAG_TRANSFER_SYNTAX[1]), 0);\n};\n\n\n/**\n * Returns the study date.\n * @returns {string}\n */\ndaikon.Image.prototype.getStudyDate = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_STUDY_DATE[0], daikon.Tag.TAG_STUDY_DATE[1]), 0);\n};\n\n\n/**\n * Returns the planar configuration.\n * @returns {number}\n */\ndaikon.Image.prototype.getPlanarConfig = function () {\n return daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_PLANAR_CONFIG[0], daikon.Tag.TAG_PLANAR_CONFIG[1]), 0);\n};\n\n\n/**\n * Returns all descriptive info for this image.\n * @returns {string}\n */\ndaikon.Image.prototype.getImageDescription = function () {\n var value, string = \"\";\n\n value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_STUDY_DES[0], daikon.Tag.TAG_STUDY_DES[1]), 0);\n if (value !== null) {\n string += (\" \" + value);\n }\n\n value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_SERIES_DESCRIPTION[0], daikon.Tag.TAG_SERIES_DESCRIPTION[1]), 0);\n if (value !== null) {\n string += (\" \" + value);\n }\n\n value = daikon.Image.getSingleValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_COMMENTS[0], daikon.Tag.TAG_IMAGE_COMMENTS[1]), 0);\n if (value !== null) {\n string += (\" \" + value);\n }\n\n return string.trim();\n};\n\n\n/**\n * Returns the datatype (e.g., daikon.Image.BYTE_TYPE_INTEGER_UNSIGNED).\n * @returns {number}\n */\ndaikon.Image.prototype.getDataType = function () {\n var interp, dataType;\n\n dataType = this.getPixelRepresentation();\n\n if (dataType === null) {\n return daikon.Image.BYTE_TYPE_UNKNOWN;\n }\n\n interp = this.getPhotometricInterpretation();\n if (interp !== null) {\n if ((interp.trim().indexOf('RGB') !== -1) || (interp.trim().indexOf('YBR') !== -1) ||\n (interp.trim().toLowerCase().indexOf('palette') !== -1)) {\n return daikon.Image.BYTE_TYPE_RGB;\n }\n }\n\n if (dataType === 0) {\n return daikon.Image.BYTE_TYPE_INTEGER_UNSIGNED;\n } else if (dataType === 1) {\n return daikon.Image.BYTE_TYPE_INTEGER;\n } else {\n return daikon.Image.BYTE_TYPE_UNKNOWN;\n }\n};\n\n\n\n// originally from: http://public.kitware.com/pipermail/insight-users/2005-March/012246.html\ndaikon.Image.prototype.getAcquiredSliceDirection = function () {\n var dirCos, rowAxis, colAxis, label;\n\n dirCos = daikon.Image.getValueSafely(this.getTag(daikon.Tag.TAG_IMAGE_ORIENTATION[0], daikon.Tag.TAG_IMAGE_ORIENTATION[1]));\n\n if (!dirCos || (dirCos.length !== 6)) {\n return daikon.Image.SLICE_DIRECTION_UNKNOWN;\n }\n\n rowAxis = daikon.Image.getMajorAxisFromPatientRelativeDirectionCosine(dirCos[0], dirCos[1], dirCos[2]);\n colAxis = daikon.Image.getMajorAxisFromPatientRelativeDirectionCosine(dirCos[3], dirCos[4], dirCos[5]);\n\n if ((rowAxis !== null) && (colAxis !== null)) {\n if (((rowAxis === \"R\") || (rowAxis === \"L\")) && ((colAxis === \"A\") || (colAxis === \"P\"))) {\n label = daikon.Image.SLICE_DIRECTION_AXIAL;\n } else if (((colAxis === \"R\") || (colAxis === \"L\")) && ((rowAxis === \"A\") || (rowAxis === \"P\"))) {\n label = daikon.Image.SLICE_DIRECTION_AXIAL;\n } else if (((rowAxis === \"R\") || (rowAxis === \"L\")) && ((colAxis === \"H\") || (colAxis === \"F\"))) {\n label = daikon.Image.SLICE_DIRECTION_CORONAL;\n } else if (((colAxis === \"R\") || (colAxis === \"L\")) && ((rowAxis === \"H\") || (rowAxis === \"F\"))) {\n label = daikon.Image.SLICE_DIRECTION_CORONAL;\n } else if (((rowAxis === \"A\") || (rowAxis === \"P\")) && ((colAxis === \"H\") || (colAxis === \"F\"))) {\n label = daikon.Image.SLICE_DIRECTION_SAGITTAL;\n } else if (((colAxis === \"A\") || (colAxis === \"P\")) && ((rowAxis === \"H\") || (rowAxis === \"F\"))) {\n label = daikon.Image.SLICE_DIRECTION_SAGITTAL;\n }\n } else {\n label = daikon.Image.SLICE_DIRECTION_OBLIQUE;\n }\n\n return label;\n};\n\n\n\n// returns an array of tags\n/**\n * Returns encapsulated data tags.\n * @returns {daikon.Tag[]}\n */\ndaikon.Image.prototype.getEncapsulatedData = function () {\n var buffer, parser;\n\n daikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\n\n buffer = this.getPixelData().value.buffer;\n parser = new daikon.Parser();\n return parser.parseEncapsulated(new DataView(buffer));\n};\n\n\n\ndaikon.Image.prototype.getJpegs = function () {\n var encapTags, numTags, ctr, currentJpeg, data = [], dataConcat = [];\n\n encapTags = this.getEncapsulatedData();\n\n // organize data as an array of an array of JPEG parts\n if (encapTags) {\n numTags = encapTags.length;\n\n for (ctr = 0; ctr < numTags; ctr += 1) {\n if (daikon.CompressionUtils.isHeaderJPEG(encapTags[ctr].value) ||\n daikon.CompressionUtils.isHeaderJPEG2000(encapTags[ctr].value)) {\n currentJpeg = [];\n currentJpeg.push(encapTags[ctr].value.buffer);\n data.push(currentJpeg);\n } else if (currentJpeg && encapTags[ctr].value) {\n currentJpeg.push(encapTags[ctr].value.buffer);\n }\n }\n }\n\n // concat into an array of full JPEGs\n for (ctr = 0; ctr < data.length; ctr += 1) {\n if (data[ctr].length > 1) {\n dataConcat[ctr] = daikon.Utils.concatArrayBuffers2(data[ctr]);\n } else {\n dataConcat[ctr] = data[ctr][0];\n }\n\n data[ctr] = null;\n }\n\n return dataConcat;\n};\n\n\n\ndaikon.Image.prototype.getRLE = function () {\n var encapTags, numTags, ctr, data = [];\n\n encapTags = this.getEncapsulatedData();\n\n // organize data as an array of an array of JPEG parts\n if (encapTags) {\n numTags = encapTags.length;\n\n // the first sublist item contains offsets, need offsets?\n for (ctr = 1; ctr < numTags; ctr += 1) {\n if (encapTags[ctr].value) {\n data.push(encapTags[ctr].value.buffer);\n }\n }\n }\n\n return data;\n};\n\n\n/**\n * Returns a string of interpreted private data.\n * @returns {string}\n */\ndaikon.Image.prototype.getAllInterpretedPrivateData = function() {\n var ctr, key, tag, str = \"\";\n\n var sorted_keys = Object.keys(this.tags).sort();\n\n for (ctr = 0; ctr < sorted_keys.length; ctr+=1) {\n key = sorted_keys[ctr];\n if (this.tags.hasOwnProperty(key)) {\n tag = this.tags[key];\n if (tag.hasInterpretedPrivateData()) {\n str += tag.value;\n }\n }\n }\n\n return str;\n};\n\n\n/**\n * Returns a string representation of this image.\n * @returns {string}\n */\ndaikon.Image.prototype.toString = function () {\n var ctr, tag, key, str = \"\";\n\n var sorted_keys = Object.keys(this.tags).sort();\n\n for (ctr = 0; ctr < sorted_keys.length; ctr+=1) {\n key = sorted_keys[ctr];\n if (this.tags.hasOwnProperty(key)) {\n tag = this.tags[key];\n str += (tag.toHTMLString() + \"
\");\n }\n }\n\n str = str.replace(/\\n\\s*\\n/g, '\\n'); // replace mutli-newlines with single newline\n str = str.replace(/(?:\\r\\n|\\r|\\n)/g, '
'); // replace newlines with
\n\n return str;\n};\n\n\n\ndaikon.Image.prototype.getPalleteValues = function (tagID) {\n /*jslint bitwise: true */\n\n var valsBig, valsLittle, value, numVals, ctr, valsBigMax, valsBigMin, valsLittleMax, valsLittleMin, valsBigDiff,\n valsLittleDiff;\n\n valsBig = null;\n valsLittle = null;\n\n value = daikon.Image.getValueSafely(this.getTag(tagID[0], tagID[1]));\n\n if (value !== null) {\n numVals = value.buffer.byteLength / 2;\n valsBig = [];\n valsLittle = [];\n\n for (ctr = 0; ctr < numVals; ctr += 1) {\n valsBig[ctr] = (value.getUint16(ctr * 2, false) & 0xFFFF);\n valsLittle[ctr] = (value.getUint16(ctr * 2, true) & 0xFFFF);\n }\n\n valsBigMax = Math.max.apply(Math, valsBig);\n valsBigMin = Math.min.apply(Math, valsBig);\n valsLittleMax = Math.max.apply(Math, valsLittle);\n valsLittleMin = Math.min.apply(Math, valsLittle);\n valsBigDiff = Math.abs(valsBigMax - valsBigMin);\n valsLittleDiff = Math.abs(valsLittleMax - valsLittleMin);\n\n if (valsBigDiff < valsLittleDiff) {\n return this.scalePalette(valsBig);\n } else {\n return this.scalePalette(valsLittle);\n }\n }\n\n return null;\n};\n\n\n\ndaikon.Image.prototype.scalePalette = function (pal) {\n var min, max, ctr, slope, intercept;\n\n max = Math.max.apply(Math, pal);\n min = Math.min.apply(Math, pal);\n\n if ((max > 255) || (min < 0)) {\n slope = 255.0 / (max - min);\n intercept = min;\n\n for (ctr = 0; ctr < pal.length; ctr += 1) {\n pal[ctr] = parseInt(Math.round((pal[ctr] - intercept) * slope));\n }\n }\n\n return pal;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Image;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/image.js\n// module id = 25\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\n\n\n/*** Constructor ***/\ndaikon.OrderedMapIterator = daikon.OrderedMapIterator || function (orderedMap) {\n this.orderedMap = orderedMap;\n this.index = 0;\n};\n\n\n/*** Prototype Methods ***/\n\ndaikon.OrderedMapIterator.prototype.hasNext = function() {\n return (this.index < this.orderedMap.orderedKeys.length);\n};\n\n\n\ndaikon.OrderedMapIterator.prototype.next = function() {\n var item = this.orderedMap.get(this.orderedMap.orderedKeys[this.index]);\n this.index += 1;\n return item;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.OrderedMapIterator;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/iterator.js\n// module id = 26\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\ndaikon.Dictionary = daikon.Dictionary || ((typeof require !== 'undefined') ? require('./dictionary.js') : null);\ndaikon.Siemens = daikon.Siemens || ((typeof require !== 'undefined') ? require('./siemens.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Tag constuctor.\n * @property {number} group\n * @property {number} element\n * @property {string} vr\n * @property {number} offsetStart\n * @property {number} offsetValue\n * @property {number} offsetEnd\n * @property {boolean} sublist - true if this tag is a sublist\n * @property {number|number[]|string|string[]|object} value\n * @type {Function}\n */\ndaikon.Tag = daikon.Tag || function (group, element, vr, value, offsetStart, offsetValue, offsetEnd, littleEndian) {\n this.group = group;\n this.element = element;\n this.vr = vr;\n this.offsetStart = offsetStart;\n this.offsetValue = offsetValue;\n this.offsetEnd = offsetEnd;\n this.sublist = false;\n this.preformatted = false;\n this.id = daikon.Tag.createId(group, element);\n\n if (value instanceof Array) {\n this.value = value;\n this.sublist = true;\n } else if (value !== null) {\n var dv = new DataView(value);\n this.value = daikon.Tag.convertValue(vr, dv, littleEndian);\n\n if ((this.value === dv) && this.isPrivateData()) {\n this.value = daikon.Tag.convertPrivateValue(group, element, dv);\n this.preformatted = (this.value !== dv);\n }\n } else {\n this.value = null;\n }\n};\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Tag.PRIVATE_DATA_READERS = [daikon.Siemens];\n\ndaikon.Tag.VR_AE_MAX_LENGTH = 16;\ndaikon.Tag.VR_AS_MAX_LENGTH = 4;\ndaikon.Tag.VR_AT_MAX_LENGTH = 4;\ndaikon.Tag.VR_CS_MAX_LENGTH = 16;\ndaikon.Tag.VR_DA_MAX_LENGTH = 8;\ndaikon.Tag.VR_DS_MAX_LENGTH = 16;\ndaikon.Tag.VR_DT_MAX_LENGTH = 26;\ndaikon.Tag.VR_FL_MAX_LENGTH = 4;\ndaikon.Tag.VR_FD_MAX_LENGTH = 8;\ndaikon.Tag.VR_IS_MAX_LENGTH = 12;\ndaikon.Tag.VR_LO_MAX_LENGTH = 64;\ndaikon.Tag.VR_LT_MAX_LENGTH = 10240;\ndaikon.Tag.VR_OB_MAX_LENGTH = -1;\ndaikon.Tag.VR_OD_MAX_LENGTH = -1;\ndaikon.Tag.VR_OF_MAX_LENGTH = -1;\ndaikon.Tag.VR_OW_MAX_LENGTH = -1;\ndaikon.Tag.VR_PN_MAX_LENGTH = 64 * 5;\ndaikon.Tag.VR_SH_MAX_LENGTH = 16;\ndaikon.Tag.VR_SL_MAX_LENGTH = 4;\ndaikon.Tag.VR_SS_MAX_LENGTH = 2;\ndaikon.Tag.VR_ST_MAX_LENGTH = 1024;\ndaikon.Tag.VR_TM_MAX_LENGTH = 16;\ndaikon.Tag.VR_UI_MAX_LENGTH = 64;\ndaikon.Tag.VR_UL_MAX_LENGTH = 4;\ndaikon.Tag.VR_UN_MAX_LENGTH = -1;\ndaikon.Tag.VR_US_MAX_LENGTH = 2;\ndaikon.Tag.VR_UT_MAX_LENGTH = -1;\ndaikon.Tag.VR_UC_MAX_LENGTH = -1;\n\n// metadata\ndaikon.Tag.TAG_TRANSFER_SYNTAX = [0x0002, 0x0010];\ndaikon.Tag.TAG_META_LENGTH = [0x0002, 0x0000];\n\n// sublists\ndaikon.Tag.TAG_SUBLIST_ITEM = [0xFFFE, 0xE000];\ndaikon.Tag.TAG_SUBLIST_ITEM_DELIM = [0xFFFE, 0xE00D];\ndaikon.Tag.TAG_SUBLIST_SEQ_DELIM = [0xFFFE, 0xE0DD];\n\n// image dims\ndaikon.Tag.TAG_ROWS = [0x0028, 0x0010];\ndaikon.Tag.TAG_COLS = [0x0028, 0x0011];\ndaikon.Tag.TAG_ACQUISITION_MATRIX = [0x0018, 0x1310];\ndaikon.Tag.TAG_NUMBER_OF_FRAMES = [0x0028, 0x0008];\ndaikon.Tag.TAG_NUMBER_TEMPORAL_POSITIONS = [0x0020, 0x0105];\n\n// voxel dims\ndaikon.Tag.TAG_PIXEL_SPACING = [0x0028, 0x0030];\ndaikon.Tag.TAG_SLICE_THICKNESS = [0x0018, 0x0050];\ndaikon.Tag.TAG_SLICE_GAP = [0x0018, 0x0088];\ndaikon.Tag.TAG_TR = [0x0018, 0x0080];\ndaikon.Tag.TAG_FRAME_TIME = [0x0018, 0x1063];\n\n// datatype\ndaikon.Tag.TAG_BITS_ALLOCATED = [0x0028, 0x0100];\ndaikon.Tag.TAG_BITS_STORED = [0x0028, 0x0101];\ndaikon.Tag.TAG_PIXEL_REPRESENTATION = [0x0028, 0x0103];\ndaikon.Tag.TAG_HIGH_BIT = [0x0028, 0x0102];\ndaikon.Tag.TAG_PHOTOMETRIC_INTERPRETATION = [0x0028, 0x0004];\ndaikon.Tag.TAG_SAMPLES_PER_PIXEL = [0x0028, 0x0002];\ndaikon.Tag.TAG_PLANAR_CONFIG = [0x0028, 0x0006];\ndaikon.Tag.TAG_PALETTE_RED = [0x0028, 0x1201];\ndaikon.Tag.TAG_PALETTE_GREEN = [0x0028, 0x1202];\ndaikon.Tag.TAG_PALETTE_BLUE = [0x0028, 0x1203];\n\n// data scale\ndaikon.Tag.TAG_DATA_SCALE_SLOPE = [0x0028, 0x1053];\ndaikon.Tag.TAG_DATA_SCALE_INTERCEPT = [0x0028, 0x1052];\ndaikon.Tag.TAG_DATA_SCALE_ELSCINT = [0x0207, 0x101F];\ndaikon.Tag.TAG_PIXEL_BANDWIDTH = [0x0018, 0x0095];\n\n// range\ndaikon.Tag.TAG_IMAGE_MIN = [0x0028, 0x0106];\ndaikon.Tag.TAG_IMAGE_MAX = [0x0028, 0x0107];\ndaikon.Tag.TAG_WINDOW_CENTER = [0x0028, 0x1050];\ndaikon.Tag.TAG_WINDOW_WIDTH = [0x0028, 0x1051];\n\n// descriptors\ndaikon.Tag.TAG_PATIENT_NAME = [0x0010, 0x0010];\ndaikon.Tag.TAG_PATIENT_ID = [0x0010, 0x0020];\ndaikon.Tag.TAG_STUDY_DATE = [0x0008, 0x0020];\ndaikon.Tag.TAG_STUDY_TIME = [0x0008, 0x0030];\ndaikon.Tag.TAG_STUDY_DES = [0x0008, 0x1030];\ndaikon.Tag.TAG_IMAGE_TYPE = [0x0008, 0x0008];\ndaikon.Tag.TAG_IMAGE_COMMENTS = [0x0020, 0x4000];\ndaikon.Tag.TAG_SEQUENCE_NAME = [0x0018, 0x0024];\ndaikon.Tag.TAG_MODALITY = [0x0008, 0x0060];\n\n// session ID\ndaikon.Tag.TAG_FRAME_OF_REF_UID = [0x0020, 0x0052];\n\n// study ID\ndaikon.Tag.TAG_STUDY_UID = [0x0020, 0x000D];\n\n// volume ID\ndaikon.Tag.TAG_SERIES_DESCRIPTION = [0x0008, 0x103E];\ndaikon.Tag.TAG_SERIES_INSTANCE_UID = [0x0020, 0x000E];\ndaikon.Tag.TAG_SERIES_NUMBER = [0x0020, 0x0011];\ndaikon.Tag.TAG_ECHO_NUMBER = [0x0018, 0x0086];\ndaikon.Tag.TAG_TEMPORAL_POSITION = [0x0020, 0x0100];\n\n// slice ID\ndaikon.Tag.TAG_IMAGE_NUM = [0x0020, 0x0013];\ndaikon.Tag.TAG_SLICE_LOCATION = [0x0020, 0x1041];\n\n// orientation\ndaikon.Tag.TAG_IMAGE_ORIENTATION = [0x0020, 0x0037];\ndaikon.Tag.TAG_IMAGE_POSITION = [0x0020, 0x0032];\ndaikon.Tag.TAG_SLICE_LOCATION_VECTOR = [0x0018, 0x2005];\n\n// LUT shape\ndaikon.Tag.TAG_LUT_SHAPE = [0x2050, 0x0020];\n\n// pixel data\ndaikon.Tag.TAG_PIXEL_DATA = [0x7FE0, 0x0010];\n\n\n/*** Static methods ***/\n\n/**\n * Create an ID string based on the specified group and element\n * @param {number} group\n * @param {number} element\n * @returns {string}\n */\ndaikon.Tag.createId = function (group, element) {\n var groupStr = daikon.Utils.dec2hex(group),\n elemStr = daikon.Utils.dec2hex(element);\n return groupStr + elemStr;\n};\n\n\n\ndaikon.Tag.getUnsignedInteger16 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n mul = rawData.byteLength / 2;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getUint16(ctr * 2, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getSignedInteger16 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n mul = rawData.byteLength / 2;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getInt16(ctr * 2, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getFloat32 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n mul = rawData.byteLength / 4;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getFloat32(ctr * 4, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getSignedInteger32 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n mul = rawData.byteLength / 4;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getInt32(ctr * 4, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getUnsignedInteger32 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n mul = rawData.byteLength / 4;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getUint32(ctr * 4, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getFloat64 = function (rawData, littleEndian) {\n var data, mul, ctr;\n\n if (rawData.byteLength < 8) {\n return 0;\n }\n\n mul = rawData.byteLength / 8;\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = rawData.getFloat64(ctr * 8, littleEndian);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getDoubleElscint = function (rawData) {\n var data = [], reordered = [], ctr;\n\n for (ctr = 0; ctr < 8; ctr += 1) {\n data[ctr] = rawData.getUint8(ctr);\n }\n\n reordered[0] = data[3];\n reordered[1] = data[2];\n reordered[2] = data[1];\n reordered[3] = data[0];\n reordered[4] = data[7];\n reordered[5] = data[6];\n reordered[6] = data[5];\n reordered[7] = data[4];\n\n data = [daikon.Utils.bytesToDouble(reordered)];\n\n return data;\n};\n\n\n\ndaikon.Tag.getFixedLengthStringValue = function (rawData, maxLength) {\n var data, mul, ctr;\n\n mul = Math.floor(rawData.byteLength / maxLength);\n data = [];\n for (ctr = 0; ctr < mul; ctr += 1) {\n data[ctr] = daikon.Utils.getStringAt(rawData, ctr * maxLength, maxLength);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getStringValue = function (rawData) {\n var data = daikon.Utils.getStringAt(rawData, 0, rawData.byteLength).split('\\\\'), ctr;\n\n for (ctr = 0; ctr < data.length; ctr += 1) {\n data[ctr] = daikon.Utils.trim(data[ctr]);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getDateStringValue = function (rawData) {\n var dotFormat = (daikon.Tag.getSingleStringValue(rawData)[0].indexOf('.') !== -1),\n stringData = daikon.Tag.getFixedLengthStringValue(rawData, dotFormat ? 10 : daikon.Tag.VR_DA_MAX_LENGTH),\n parts = null,\n data = [],\n ctr;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n if (dotFormat) {\n parts = stringData[ctr].split('.');\n if (parts.length === 3) {\n data[ctr] = new Date(daikon.Utils.safeParseInt(parts[0]),\n daikon.Utils.safeParseInt(parts[1]) - 1,\n daikon.Utils.safeParseInt(parts[2]));\n } else {\n data[ctr] = new Date();\n }\n } else if (stringData[ctr].length === 8) {\n data[ctr] = new Date(daikon.Utils.safeParseInt(stringData[ctr].substring(0, 4)),\n daikon.Utils.safeParseInt(stringData[ctr].substring(4, 6)) - 1,\n daikon.Utils.safeParseInt(stringData[ctr].substring(6, 8)));\n } else {\n data[ctr] = Date.parse(stringData[ctr]);\n }\n\n if (!daikon.Utils.isValidDate(data[ctr])) {\n data[ctr] = stringData[ctr];\n }\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getDateTimeStringValue = function (rawData) {\n var stringData = daikon.Tag.getStringValue(rawData),\n data = [],\n ctr,\n year = null,\n month = null,\n date = null,\n hours = null,\n minutes = null,\n seconds = null;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n if (stringData[ctr].length >= 4) {\n year = parseInt(stringData[ctr].substring(0, 4), 10); // required\n\n if (stringData[ctr].length >= 6) {\n month = daikon.Utils.safeParseInt(stringData[ctr].substring(4, 6)) - 1;\n }\n\n if (stringData[ctr].length >= 8) {\n date = daikon.Utils.safeParseInt(stringData[ctr].substring(6, 8));\n }\n\n if (stringData[ctr].length >= 10) {\n hours = daikon.Utils.safeParseInt(stringData[ctr].substring(8, 10));\n }\n\n if (stringData[ctr].length >= 12) {\n minutes = daikon.Utils.safeParseInt(stringData[ctr].substring(10, 12));\n }\n\n if (stringData[ctr].length >= 14) {\n seconds = daikon.Utils.safeParseInt(stringData[ctr].substring(12, 14));\n }\n\n data[ctr] = new Date(year, month, date, hours, minutes, seconds);\n } else {\n data[ctr] = Date.parse(stringData[ctr]);\n }\n\n if (!daikon.Utils.isValidDate(data[ctr])) {\n data[ctr] = stringData[ctr];\n }\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getTimeStringValue = function (rawData, ms) {\n var stringData = daikon.Tag.getStringValue(rawData),\n data = [];\n\n if (ms) {\n var parts = null,\n ctr,\n hours = 0,\n minutes = 0,\n seconds = 0;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n if (stringData[ctr].indexOf(':') !== -1) {\n parts = stringData[ctr].split(':');\n hours = daikon.Utils.safeParseInt(parts[0]);\n\n if (parts.length > 1) {\n minutes = daikon.Utils.safeParseInt(parts[1]);\n }\n\n if (parts.length > 2) {\n seconds = daikon.Utils.safeParseFloat(parts[2]);\n }\n } else {\n if (stringData[ctr].length >= 2) {\n hours = daikon.Utils.safeParseInt(stringData[ctr].substring(0, 2));\n }\n\n if (stringData[ctr].length >= 4) {\n minutes = daikon.Utils.safeParseInt(stringData[ctr].substring(2, 4));\n }\n\n if (stringData[ctr].length >= 6) {\n seconds = daikon.Utils.safeParseFloat(stringData[ctr].substring(4));\n }\n }\n\n data[ctr] = Math.round((hours * 60 * 60 * 1000) + (minutes * 60 * 1000) + (seconds * 1000));\n }\n\n return data;\n }\n\n\n return stringData;\n};\n\n\n\ndaikon.Tag.getDoubleStringValue = function (rawData) {\n var stringData = daikon.Tag.getStringValue(rawData),\n data = [],\n ctr;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n data[ctr] = parseFloat(stringData[ctr]);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getIntegerStringValue = function (rawData) {\n var stringData = daikon.Tag.getStringValue(rawData),\n data = [],\n ctr;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n data[ctr] = parseInt(stringData[ctr], 10);\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.getSingleStringValue = function (rawData) {\n return [daikon.Utils.trim(daikon.Utils.getStringAt(rawData, 0, rawData.byteLength))];\n};\n\n\n\ndaikon.Tag.getPersonNameStringValue = function (rawData) {\n var stringData = daikon.Tag.getStringValue(rawData),\n data = [],\n ctr;\n\n for (ctr = 0; ctr < stringData.length; ctr += 1) {\n data[ctr] = stringData[ctr].replace('^', ' ');\n }\n\n return data;\n};\n\n\n\ndaikon.Tag.convertPrivateValue = function (group, element, rawData) {\n var ctr, privReader;\n\n for (ctr = 0; ctr < daikon.Tag.PRIVATE_DATA_READERS.length; ctr += 1) {\n privReader = new daikon.Tag.PRIVATE_DATA_READERS[ctr](rawData.buffer);\n if (privReader.canRead(group, element)) {\n return privReader.readHeader();\n }\n }\n\n return rawData;\n};\n\n\n\ndaikon.Tag.convertValue = function (vr, rawData, littleEndian) {\n var data = null;\n\n if (vr === 'AE') {\n data = daikon.Tag.getSingleStringValue(rawData, daikon.Tag.VR_AE_MAX_LENGTH);\n } else if (vr === 'AS') {\n data = daikon.Tag.getFixedLengthStringValue(rawData, daikon.Tag.VR_AS_MAX_LENGTH);\n } else if (vr === 'AT') {\n data = daikon.Tag.getUnsignedInteger16(rawData, littleEndian);\n } else if (vr === 'CS') {\n data = daikon.Tag.getStringValue(rawData);\n } else if (vr === 'DA') {\n data = daikon.Tag.getDateStringValue(rawData);\n } else if (vr === 'DS') {\n data = daikon.Tag.getDoubleStringValue(rawData);\n } else if (vr === 'DT') {\n data = daikon.Tag.getDateTimeStringValue(rawData);\n } else if (vr === 'FL') {\n data = daikon.Tag.getFloat32(rawData, littleEndian);\n } else if (vr === 'FD') {\n data = daikon.Tag.getFloat64(rawData, littleEndian);\n } else if (vr === 'FE') { // special Elscint double (see dictionary)\n data = daikon.Tag.getDoubleElscint(rawData, littleEndian);\n } else if (vr === 'IS') {\n data = daikon.Tag.getIntegerStringValue(rawData);\n } else if (vr === 'LO') {\n data = daikon.Tag.getStringValue(rawData);\n } else if (vr === 'LT') {\n data = daikon.Tag.getSingleStringValue(rawData);\n } else if (vr === 'OB') {\n data = rawData;\n } else if (vr === 'OD') {\n data = rawData;\n } else if (vr === 'OF') {\n data = rawData;\n } else if (vr === 'OW') {\n data = rawData;\n } else if (vr === 'PN') {\n data = daikon.Tag.getPersonNameStringValue(rawData);\n } else if (vr === 'SH') {\n data = daikon.Tag.getStringValue(rawData);\n } else if (vr === 'SL') {\n data = daikon.Tag.getSignedInteger32(rawData, littleEndian);\n } else if (vr === 'SQ') {\n data = null;\n } else if (vr === 'SS') {\n data = daikon.Tag.getSignedInteger16(rawData, littleEndian);\n } else if (vr === 'ST') {\n data = daikon.Tag.getSingleStringValue(rawData);\n } else if (vr === 'TM') {\n data = daikon.Tag.getTimeStringValue(rawData);\n } else if (vr === 'UI') {\n data = daikon.Tag.getStringValue(rawData);\n } else if (vr === 'UL') {\n data = daikon.Tag.getUnsignedInteger32(rawData, littleEndian);\n } else if (vr === 'UN') {\n data = rawData;\n } else if (vr === 'US') {\n data = daikon.Tag.getUnsignedInteger16(rawData, littleEndian);\n } else if (vr === 'UT') {\n data = daikon.Tag.getSingleStringValue(rawData);\n } else if (vr === 'UC') {\n data = daikon.Tag.getStringValue(rawData);\n }\n\n return data;\n};\n\n\n/*** Prototype Methods ***/\n\n/**\n * Returns a string representation of this tag.\n * @param {number} [level] - the indentation level\n * @param {boolean} [html]\n * @returns {string}\n */\ndaikon.Tag.prototype.toString = function (level, html) {\n var valueStr = '',\n ctr,\n groupStr = daikon.Utils.dec2hex(this.group),\n elemStr = daikon.Utils.dec2hex(this.element),\n tagStr = '(' + groupStr + ',' + elemStr + ')',\n des = '',\n padding;\n\n if (level === undefined) {\n level = 0;\n }\n\n padding = \"\";\n for (ctr = 0; ctr < level; ctr += 1) {\n if (html) {\n padding += \"  \";\n } else {\n padding += \" \";\n }\n }\n\n if (this.sublist) {\n for (ctr = 0; ctr < this.value.length; ctr += 1) {\n valueStr += ('\\n' + (this.value[ctr].toString(level + 1, html)));\n }\n } else if (this.vr === 'SQ') {\n valueStr = '';\n } else if (this.isPixelData()) {\n valueStr = '';\n } else if (!this.value) {\n valueStr = '';\n } else {\n if (html && this.preformatted) {\n valueStr = \"[
\"+this.value +\"
]\";\n } else {\n valueStr = '[' + this.value + ']';\n }\n }\n\n if (this.isSublistItem()) {\n tagStr = \"Sequence Item\";\n } else if (this.isSublistItemDelim()) {\n tagStr = \"Sequence Item Delimiter\";\n } else if (this.isSequenceDelim()) {\n tagStr = \"Sequence Delimiter\";\n } else if (this.isPixelData()) {\n tagStr = \"Pixel Data\";\n } else {\n des = daikon.Utils.convertCamcelCaseToTitleCase(daikon.Dictionary.getDescription(this.group, this.element));\n }\n\n if (html) {\n return padding + \"\" + tagStr + \"   \" + des + '   ' + valueStr;\n } else {\n return padding + ' ' + tagStr + ' ' + des + ' ' + valueStr;\n }\n};\n\n\n/**\n * Returns an HTML string representation of this tag.\n * @param {number} level - the indentation level\n * @returns {string}\n */\ndaikon.Tag.prototype.toHTMLString = function (level) {\n return this.toString(level, true);\n};\n\n\n/**\n * Returns true if this is the transform syntax tag.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isTransformSyntax = function () {\n return (this.group === daikon.Tag.TAG_TRANSFER_SYNTAX[0]) && (this.element === daikon.Tag.TAG_TRANSFER_SYNTAX[1]);\n};\n\n\n/**\n * Returns true if this is the pixel data tag.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isPixelData = function () {\n return (this.group === daikon.Tag.TAG_PIXEL_DATA[0]) && (this.element === daikon.Tag.TAG_PIXEL_DATA[1]);\n};\n\n\n/**\n * Returns true if this tag contains private data.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isPrivateData = function () {\n /*jslint bitwise: true */\n return ((this.group & 1) === 1);\n};\n\n\n/**\n * Returns true if this tag contains private data that can be read.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.hasInterpretedPrivateData = function () {\n return this.isPrivateData() && daikon.Utils.isString(this.value);\n};\n\n\n/**\n * Returns true if this tag is a sublist item.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isSublistItem = function () {\n return (this.group === daikon.Tag.TAG_SUBLIST_ITEM[0]) && (this.element === daikon.Tag.TAG_SUBLIST_ITEM[1]);\n};\n\n\n/**\n * Returns true if this tag is a sublist item delimiter.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isSublistItemDelim = function () {\n return (this.group === daikon.Tag.TAG_SUBLIST_ITEM_DELIM[0]) && (this.element === daikon.Tag.TAG_SUBLIST_ITEM_DELIM[1]);\n};\n\n\n/**\n * Returns true if this tag is a sequence delimiter.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isSequenceDelim = function () {\n return (this.group === daikon.Tag.TAG_SUBLIST_SEQ_DELIM[0]) && (this.element === daikon.Tag.TAG_SUBLIST_SEQ_DELIM[1]);\n};\n\n\n/**\n * Returns true if this is a meta length tag.\n * @returns {boolean}\n */\ndaikon.Tag.prototype.isMetaLength = function () {\n return (this.group === daikon.Tag.TAG_META_LENGTH[0]) && (this.element === daikon.Tag.TAG_META_LENGTH[1]);\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Tag;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/tag.js\n// module id = 27\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/messages.js\n// module id = 28\n// module chunks = 0","export const VectorMode = {\n MAGNITUDE: 0,\n COMPONENT: 1,\n RGBCOLORS: 2,\n};\n\nexport const ScalarMappingTarget = {\n LUMINANCE: 1,\n LUMINANCE_ALPHA: 2,\n RGB: 3,\n RGBA: 4,\n};\n\nexport default {\n VectorMode,\n ScalarMappingTarget,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/ScalarsToColors/Constants.js","import * as macro from 'vtk.js/Sources/macro';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport { Filter } from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkFramebuffer methods\n// ----------------------------------------------------------------------------\nfunction vtkFramebuffer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkFramebuffer');\n\n publicAPI.getBothMode = () => model.context.FRAMEBUFFER;\n // publicAPI.getDrawMode = () => model.context.DRAW_FRAMEBUFFER;\n // publicAPI.getReadMode = () => model.context.READ_FRAMEBUFFER;\n\n publicAPI.saveCurrentBindingsAndBuffers = (modeIn) => {\n const mode =\n typeof modeIn !== 'undefined' ? modeIn : publicAPI.getBothMode();\n publicAPI.saveCurrentBindings(mode);\n publicAPI.saveCurrentBuffers(mode);\n };\n\n publicAPI.saveCurrentBindings = (modeIn) => {\n const gl = model.context;\n model.previousDrawBinding = gl.getParameter(\n model.context.FRAMEBUFFER_BINDING\n );\n };\n\n publicAPI.saveCurrentBuffers = (modeIn) => {\n // noop on webgl 1\n };\n\n publicAPI.restorePreviousBindingsAndBuffers = (modeIn) => {\n const mode =\n typeof modeIn !== 'undefined' ? modeIn : publicAPI.getBothMode();\n publicAPI.restorePreviousBindings(mode);\n publicAPI.restorePreviousBuffers(mode);\n };\n\n publicAPI.restorePreviousBindings = (modeIn) => {\n const gl = model.context;\n gl.bindFramebuffer(gl.FRAMEBUFFER, model.previousDrawBinding);\n };\n\n publicAPI.restorePreviousBuffers = (modeIn) => {\n // currently a noop on webgl1\n };\n\n publicAPI.bind = () => {\n model.context.bindFramebuffer(\n model.context.FRAMEBUFFER,\n model.glFramebuffer\n );\n if (model.colorTexture) {\n model.colorTexture.bind();\n }\n };\n\n publicAPI.create = (width, height) => {\n model.glFramebuffer = model.context.createFramebuffer();\n model.glFramebuffer.width = width;\n model.glFramebuffer.height = height;\n };\n\n publicAPI.setColorBuffer = (texture, mode) => {\n const gl = model.context;\n model.colorTexture = texture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture.getHandle(),\n 0\n );\n };\n\n // publicAPI.setDepthBuffer = (texture, mode) => {\n // const gl = model.context;\n // gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, texture.getHandle(), 0);\n // };\n\n publicAPI.getGLFramebuffer = () => model.glFramebuffer;\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (model.glFramebuffer) {\n model.context.deleteFramebuffer(model.glFramebuffer);\n }\n if (model.depthTexture) {\n model.depthTexture.releaseGraphicsResources();\n }\n if (model.colorTexture) {\n model.colorTexture.releaseGraphicsResources();\n }\n };\n\n publicAPI.getSize = () => {\n const size = [0, 0];\n if (model.glFramebuffer !== null) {\n size[0] = model.glFramebuffer.width;\n size[1] = model.glFramebuffer.height;\n }\n return size;\n };\n\n publicAPI.populateFramebuffer = () => {\n publicAPI.bind();\n const gl = model.context;\n\n const texture = vtkOpenGLTexture.newInstance();\n texture.setOpenGLRenderWindow(model.openGLRenderWindow);\n texture.setMinificationFilter(Filter.LINEAR);\n texture.setMagnificationFilter(Filter.LINEAR);\n texture.create2DFromRaw(\n model.glFramebuffer.width,\n model.glFramebuffer.height,\n 4,\n VtkDataTypes.UNSIGNED_CHAR,\n null\n );\n publicAPI.setColorBuffer(texture);\n\n // for now do not count of having a depth buffer texture\n // as they are not standard webgl 1\n model.depthTexture = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, model.depthTexture);\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n model.glFramebuffer.width,\n model.glFramebuffer.height\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n model.depthTexture\n );\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\nconst DEFAULT_VALUES = {\n openGLRenderWindow: null,\n glFramebuffer: null,\n colorTexture: null,\n depthTexture: null,\n previousDrawBinding: 0,\n previousReadBinding: 0,\n previousDrawBuffer: 0,\n previousReadBuffer: 0,\n};\n\n// ----------------------------------------------------------------------------\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.setGet(publicAPI, model, ['colorTexture']);\n\n // For more macro methods, see \"Sources/macro.js\"\n // Object specific methods\n vtkFramebuffer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\nexport const newInstance = macro.newInstance(extend, 'vtkFramebuffer');\n\n// ----------------------------------------------------------------------------\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Framebuffer/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkCellArrayBufferObject from 'vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkVertexArrayObject from 'vtk.js/Sources/Rendering/OpenGL/VertexArrayObject';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLHelper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLHelper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLHelper');\n\n publicAPI.setOpenGLRenderWindow = (win) => {\n model.program.setContext(win.getContext());\n model.VAO.setOpenGLRenderWindow(win);\n model.CABO.setOpenGLRenderWindow(win);\n };\n\n publicAPI.releaseGraphicsResources = (oglwin) => {\n model.VAO.releaseGraphicsResources();\n model.CABO.releaseGraphicsResources();\n model.CABO.setElementCount(0);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n program: null,\n shaderSourceTime: null,\n VAO: null,\n attributeUpdateTime: null,\n CABO: null,\n primitiveType: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.shaderSourceTime = {};\n macro.obj(model.shaderSourceTime);\n\n model.attributeUpdateTime = {};\n macro.obj(model.attributeUpdateTime);\n\n macro.setGet(publicAPI, model, [\n 'program',\n 'shaderSourceTime',\n 'VAO',\n 'attributeUpdateTime',\n 'CABO',\n 'primitiveType',\n ]);\n\n model.program = vtkShaderProgram.newInstance();\n model.VAO = vtkVertexArrayObject.newInstance();\n model.CABO = vtkCellArrayBufferObject.newInstance();\n\n // Object methods\n vtkOpenGLHelper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Helper/index.js","const factoryMapping = {\n vtkObject: () => null,\n};\n\nexport default function vtk(obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n if (obj.isA) {\n return obj;\n }\n if (!obj.vtkClass) {\n if (global.console && global.console.error) {\n global.console.error('Invalid VTK object');\n }\n return null;\n }\n const constructor = factoryMapping[obj.vtkClass];\n if (!constructor) {\n if (global.console && global.console.error) {\n global.console.error(\n `No vtk class found for Object of type ${obj.vtkClass}`\n );\n }\n return null;\n }\n\n // Shallow copy object\n const model = Object.assign({}, obj);\n\n // Convert into vtkObject any nested key\n Object.keys(model).forEach((keyName) => {\n if (\n model[keyName] &&\n typeof model[keyName] === 'object' &&\n model[keyName].vtkClass\n ) {\n model[keyName] = vtk(model[keyName]);\n }\n });\n\n // Return the root\n const newInst = constructor(model);\n if (newInst && newInst.modified) {\n newInst.modified();\n }\n return newInst;\n}\n\nfunction register(vtkClassName, constructor) {\n factoryMapping[vtkClassName] = constructor;\n}\n\n// Nest register method under the vtk function\nvtk.register = register;\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/vtk.js","module.exports = (__webpack_require__(3))(0);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/pug-runtime/index.js from dll-reference girder_lib\n// module id = 33\n// module chunks = 0","/*! CharLS.js - v2.0.1 - 2016-06-08 | (c) 2016 Chris Hafey | https://github.com/chafey/charls */\n\n/*!\n Copyright (c) 2007-2010, Jan de Vaan\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * Neither the name of my employer, nor the names of its contributors may be\n used to endorse or promote products derived from this software without\n specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar CharLS = function(Module) {\n Module = Module || {};\n\nvar Module;if(!Module)Module=(typeof CharLS!==\"undefined\"?CharLS:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window===\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";var ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module[\"print\"])Module[\"print\"]=function print(x){process[\"stdout\"].write(x+\"\\n\")};if(!Module[\"printErr\"])Module[\"printErr\"]=function printErr(x){process[\"stderr\"].write(x+\"\\n\")};var nodeFS=require(\"fs\");var nodePath=require(\"path\");Module[\"read\"]=function read(filename,binary){filename=nodePath[\"normalize\"](filename);var ret=nodeFS[\"readFileSync\"](filename);if(!ret&&filename!=nodePath[\"resolve\"](filename)){filename=path.join(__dirname,\"..\",\"src\",filename);ret=nodeFS[\"readFileSync\"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module[\"load\"]=function load(f){globalEval(read(f))};if(!Module[\"thisProgram\"]){if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}else{Module[\"thisProgram\"]=\"unknown-program\"}}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(!Module[\"print\"])Module[\"print\"]=print;if(typeof printErr!=\"undefined\")Module[\"printErr\"]=printErr;if(typeof read!=\"undefined\"){Module[\"read\"]=read}else{Module[\"read\"]=function read(){throw\"no read() available (jsc?)\"}}Module[\"readBinary\"]=function readBinary(f){if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}var data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof console!==\"undefined\"){if(!Module[\"print\"])Module[\"print\"]=function print(x){console.log(x)};if(!Module[\"printErr\"])Module[\"printErr\"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module[\"print\"])Module[\"print\"]=TRY_USE_DUMP&&typeof dump!==\"undefined\"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module[\"load\"]=importScripts}if(typeof Module[\"setWindowTitle\"]===\"undefined\"){Module[\"setWindowTitle\"]=(function(title){document.title=title})}}else{throw\"Unknown runtime environment. Where are we?\"}function globalEval(x){eval.call(null,x)}if(!Module[\"load\"]&&Module[\"read\"]){Module[\"load\"]=function load(f){globalEval(Module[\"read\"](f))}}if(!Module[\"print\"]){Module[\"print\"]=(function(){})}if(!Module[\"printErr\"]){Module[\"printErr\"]=Module[\"print\"]}if(!Module[\"arguments\"]){Module[\"arguments\"]=[]}if(!Module[\"thisProgram\"]){Module[\"thisProgram\"]=\"./this.program\"}Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];Module[\"preRun\"]=[];Module[\"postRun\"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return Runtime.QUANTUM_SIZE}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type===\"double\"||type===\"i64\"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type==\"i64\"||type==\"double\"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module[\"dynCall_\"+sig].apply(null,args)}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module[\"Runtime\"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}var globalScope=this;function getCFunc(ident){var func=Module[\"_\"+ident];if(!func){try{func=eval(\"_\"+ident)}catch(e){}}assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\");return func}var cwrap,ccall;((function(){var JSfuncs={\"stackSave\":(function(){Runtime.stackSave()}),\"stackRestore\":(function(){Runtime.stackRestore()}),\"arrayToC\":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;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;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}Module[\"setValue\"]=setValue;function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for setValue: \"+type)}return null}Module[\"getValue\"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module[\"ALLOC_NORMAL\"]=ALLOC_NORMAL;Module[\"ALLOC_STACK\"]=ALLOC_STACK;Module[\"ALLOC_STATIC\"]=ALLOC_STATIC;Module[\"ALLOC_DYNAMIC\"]=ALLOC_DYNAMIC;Module[\"ALLOC_NONE\"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module[\"UTF8ToString\"](ptr)}Module[\"Pointer_stringify\"]=Pointer_stringify;function AsciiToString(ptr){var str=\"\";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module[\"AsciiToString\"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module[\"stringToAscii\"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module[\"UTF8ArrayToString\"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module[\"UTF8ToString\"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module[\"stringToUTF8Array\"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module[\"stringToUTF8\"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str=\"\";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module[\"UTF16ToString\"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module[\"stringToUTF16\"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module[\"lengthBytesUTF16\"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str=\"\";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module[\"UTF32ToString\"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module[\"stringToUTF32\"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}Module[\"lengthBytesUTF32\"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module[\"___cxa_demangle\"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module[\"___cxa_demangle\"](buf,0,0,status);if(getValue(status,\"i32\")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={\"v\":\"void\",\"b\":\"bool\",\"c\":\"char\",\"s\":\"short\",\"i\":\"int\",\"l\":\"long\",\"f\":\"float\",\"d\":\"double\",\"w\":\"wchar_t\",\"a\":\"signed char\",\"h\":\"unsigned char\",\"t\":\"unsigned short\",\"j\":\"unsigned int\",\"m\":\"unsigned long\",\"x\":\"long long\",\"y\":\"unsigned long long\",\"z\":\"...\"};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre=\"\";for(var a=0;a\"}else{ret=name}paramLoop:while(i0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case\"P\":list.push(parse(true,1,true)[0]+\"*\");break;case\"R\":list.push(parse(true,1,true)[0]+\"&\");break;case\"L\":{i++;var end=func.indexOf(\"E\",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case\"A\":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!==\"_\")throw\"?\";i++;list.push(parse(true,1,true)[0]+\" [\"+size+\"]\");break};case\"E\":break paramLoop;default:ret+=\"?\"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]===\"void\")list=[];if(rawList){if(ret){list.push(ret+\"?\")}return list}else{return ret+flushList()}}var parsed=func;try{if(func==\"Object._main\"||func==\"_main\"){return\"main()\"}if(typeof func===\"number\")func=Pointer_stringify(func);if(func[0]!==\"_\")return func;if(func[1]!==\"_\")return func;if(func[2]!==\"Z\")return func;switch(func[3]){case\"n\":return\"operator new()\";case\"d\":return\"operator delete()\"}parsed=parse()}catch(e){parsed+=\"?\"}if(parsed.indexOf(\"?\")>=0&&!hasLibcxxabi){Runtime.warnOnce(\"warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\")}return parsed}function demangleAll(text){return text.replace(/__Z[\\w\\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module[\"stackTrace\"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){var OLD_TOTAL_MEMORY=TOTAL_MEMORY;var LIMIT=Math.pow(2,31);if(DYNAMICTOP>=LIMIT)return false;while(TOTAL_MEMORY<=DYNAMICTOP){if(TOTAL_MEMORY=LIMIT)return false;try{if(ArrayBuffer.transfer){buffer=ArrayBuffer.transfer(buffer,TOTAL_MEMORY)}else{var oldHEAP8=HEAP8;buffer=new ArrayBuffer(TOTAL_MEMORY)}}catch(e){return false}var success=_emscripten_replace_memory(buffer);if(!success)return false;Module[\"buffer\"]=buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer);if(!ArrayBuffer.transfer){HEAP8.set(oldHEAP8)}return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,\"byteLength\").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;var totalMemory=64*1024;while(totalMemory0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Runtime.dynCall(\"v\",func)}else{Runtime.dynCall(\"vi\",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module[\"addOnPreRun\"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module[\"addOnInit\"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module[\"addOnPreMain\"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module[\"addOnExit\"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module[\"addOnPostRun\"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module[\"intArrayFromString\"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}Module[\"intArrayToString\"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i>0]=chr;i=i+1}}Module[\"writeStringToMemory\"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i>0]=array[i]}}Module[\"writeArrayToMemory\"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module[\"writeAsciiToMemory\"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}Module[\"addRunDependency\"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"removeRunDependency\"]=removeRunDependency;Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+59744;__ATINIT__.push({func:(function(){__GLOBAL__I_000101()})},{func:(function(){__GLOBAL__sub_I_jpegls_cpp()})},{func:(function(){__GLOBAL__sub_I_iostream_cpp()})});allocate([0,0,0,0,0,0,0,0,84,144,0,0,31,194,0,0,216,0,0,0,0,0,0,0,84,144,0,0,237,191,0,0,48,0,0,0,0,0,0,0,44,144,0,0,41,192,0,0,84,144,0,0,55,192,0,0,48,0,0,0,0,0,0,0,84,144,0,0,115,192,0,0,48,0,0,0,0,0,0,0,84,144,0,0,175,192,0,0,152,3,0,0,0,0,0,0,84,144,0,0,241,192,0,0,216,3,0,0,0,0,0,0,84,144,0,0,55,193,0,0,48,0,0,0,0,0,0,0,84,144,0,0,95,193,0,0,48,0,0,0,0,0,0,0,84,144,0,0,135,193,0,0,48,0,0,0,0,0,0,0,84,144,0,0,175,193,0,0,48,0,0,0,0,0,0,0,84,144,0,0,216,193,0,0,48,0,0,0,0,0,0,0,84,144,0,0,241,193,0,0,48,0,0,0,0,0,0,0,44,144,0,0,13,194,0,0,84,144,0,0,80,194,0,0,216,0,0,0,0,0,0,0,84,144,0,0,44,195,0,0,216,0,0,0,0,0,0,0,84,144,0,0,139,194,0,0,48,0,0,0,0,0,0,0,84,144,0,0,179,194,0,0,48,0,0,0,0,0,0,0,84,144,0,0,219,194,0,0,48,0,0,0,0,0,0,0,84,144,0,0,3,195,0,0,48,0,0,0,0,0,0,0,84,144,0,0,103,195,0,0,216,0,0,0,0,0,0,0,84,144,0,0,157,195,0,0,216,0,0,0,0,0,0,0,84,144,0,0,211,195,0,0,216,0,0,0,0,0,0,0,84,144,0,0,8,196,0,0,216,0,0,0,0,0,0,0,84,144,0,0,71,196,0,0,216,0,0,0,0,0,0,0,84,144,0,0,138,196,0,0,160,1,0,0,0,0,0,0,44,144,0,0,120,196,0,0,84,144,0,0,187,196,0,0,160,1,0,0,0,0,0,0,84,144,0,0,246,196,0,0,160,1,0,0,0,0,0,0,84,144,0,0,49,197,0,0,160,1,0,0,0,0,0,0,84,144,0,0,103,197,0,0,160,1,0,0,0,0,0,0,84,144,0,0,157,197,0,0,160,1,0,0,0,0,0,0,84,144,0,0,210,197,0,0,160,1,0,0,0,0,0,0,84,144,0,0,17,198,0,0,160,1,0,0,0,0,0,0,84,144,0,0,86,198,0,0,72,3,0,0,0,0,0,0,84,144,0,0,162,198,0,0,56,2,0,0,0,0,0,0,44,144,0,0,182,198,0,0,84,144,0,0,196,198,0,0,56,2,0,0,0,0,0,0,84,144,0,0,112,199,0,0,96,2,0,0,0,0,0,0,44,144,0,0,125,199,0,0,84,144,0,0,138,199,0,0,96,2,0,0,0,0,0,0,44,144,0,0,156,199,0,0,84,144,0,0,169,199,0,0,96,2,0,0,0,0,0,0,84,144,0,0,181,199,0,0,120,2,0,0,0,0,0,0,84,144,0,0,214,199,0,0,144,2,0,0,0,0,0,0,84,144,0,0,28,200,0,0,144,2,0,0,0,0,0,0,84,144,0,0,248,199,0,0,176,2,0,0,0,0,0,0,84,144,0,0,62,200,0,0,160,2,0,0,0,0,0,0,84,144,0,0,99,200,0,0,160,2,0,0,0,0,0,0,84,144,0,0,182,221,0,0,160,3,0,0,0,0,0,0,84,144,0,0,245,221,0,0,160,3,0,0,0,0,0,0,84,144,0,0,13,222,0,0,152,3,0,0,0,0,0,0,84,144,0,0,38,222,0,0,152,3,0,0,0,0,0,0,44,144,0,0,62,222,0,0,84,144,0,0,87,222,0,0,104,2,0,0,0,0,0,0,44,144,0,0,110,222,0,0,84,144,0,0,135,222,0,0,72,3,0,0,0,0,0,0,84,144,0,0,161,222,0,0,56,3,0,0,0,0,0,0,44,144,0,0,187,222,0,0,84,144,0,0,205,222,0,0,112,3,0,0,0,0,0,0,84,144,0,0,247,222,0,0,112,3,0,0,0,0,0,0,44,144,0,0,33,223,0,0,44,144,0,0,82,223,0,0,124,144,0,0,131,223,0,0,0,0,0,0,1,0,0,0,120,3,0,0,3,244,255,255,124,144,0,0,178,223,0,0,0,0,0,0,1,0,0,0,136,3,0,0,3,244,255,255,124,144,0,0,225,223,0,0,0,0,0,0,1,0,0,0,120,3,0,0,3,244,255,255,124,144,0,0,16,224,0,0,0,0,0,0,1,0,0,0,136,3,0,0,3,244,255,255,84,144,0,0,63,224,0,0,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,144,0,0,187,224,0,0,48,3,0,0,0,0,0,0,124,144,0,0,209,224,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,64,10,0,0,2,0,0,0,124,144,0,0,227,224,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,72,10,0,0,2,0,0,0,124,144,0,0,5,225,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,72,10,0,0,2,0,0,0,124,144,0,0,40,225,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,72,10,0,0,2,0,0,0,84,144,0,0,75,225,0,0,144,4,0,0,0,0,0,0,84,144,0,0,109,225,0,0,144,4,0,0,0,0,0,0,124,144,0,0,144,225,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,72,10,0,0,2,0,0,0,84,144,0,0,178,225,0,0,32,4,0,0,0,0,0,0,84,144,0,0,200,225,0,0,32,4,0,0,0,0,0,0,84,144,0,0,220,225,0,0,32,4,0,0,0,0,0,0,124,144,0,0,240,225,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,64,10,0,0,2,0,0,0,84,144,0,0,2,226,0,0,32,4,0,0,0,0,0,0,84,144,0,0,23,226,0,0,32,4,0,0,0,0,0,0,124,144,0,0,44,226,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,80,10,0,0,0,0,0,0,124,144,0,0,112,226,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,104,10,0,0,0,0,0,0,124,144,0,0,180,226,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,128,10,0,0,0,0,0,0,124,144,0,0,248,226,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,152,10,0,0,0,0,0,0,124,144,0,0,60,227,0,0,0,0,0,0,3,0,0,0,32,4,0,0,2,0,0,0,176,10,0,0,2,0,0,0,184,10,0,0,0,8,0,0,124,144,0,0,129,227,0,0,0,0,0,0,3,0,0,0,32,4,0,0,2,0,0,0,176,10,0,0,2,0,0,0,192,10,0,0,0,8,0,0,124,144,0,0,198,227,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,200,10,0,0,0,8,0,0,124,144,0,0,11,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,200,10,0,0,0,8,0,0,124,144,0,0,80,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,208,10,0,0,2,0,0,0,124,144,0,0,108,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,208,10,0,0,2,0,0,0,124,144,0,0,136,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,208,10,0,0,2,0,0,0,124,144,0,0,164,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,208,10,0,0,2,0,0,0,124,144,0,0,192,228,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,216,10,0,0,0,0,0,0,124,144,0,0,6,229,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,224,10,0,0,0,0,0,0,124,144,0,0,76,229,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,232,10,0,0,0,0,0,0,124,144,0,0,146,229,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,240,10,0,0,0,0,0,0,124,144,0,0,216,229,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,248,10,0,0,2,0,0,0,124,144,0,0,237,229,0,0,0,0,0,0,2,0,0,0,32,4,0,0,2,0,0,0,248,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,144,0,0,73,233,0,0,44,144,0,0,50,233,0,0,124,144,0,0,28,233,0,0,0,0,0,0,1,0,0,0,8,11,0,0,0,0,0,0,124,144,0,0,237,232,0,0,0,0,0,0,1,0,0,0,8,11,0,0,0,0,0,0,124,144,0,0,215,232,0,0,0,0,0,0,1,0,0,0,0,11,0,0,0,0,0,0,124,144,0,0,168,232,0,0,0,0,0,0,1,0,0,0,0,11,0,0,0,0,0,0,44,144,0,0,149,232,0,0,44,144,0,0,115,232,0,0,44,144,0,0,81,232,0,0,44,144,0,0,60,232,0,0,44,144,0,0,39,232,0,0,44,144,0,0,14,232,0,0,44,144,0,0,245,231,0,0,44,144,0,0,220,231,0,0,44,144,0,0,195,231,0,0,44,144,0,0,171,231,0,0,44,144,0,0,190,232,0,0,44,144,0,0,3,233],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([156,143,0,0,0,0,0,0,8,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,248,1,0,0,3,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,1,0,0,5,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,216,1,0,0,7,0,0,0,8,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,200,1,0,0,9,0,0,0,10,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,184,1,0,0,11,0,0,0,12,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,0,0,0,0,168,1,0,0,13,0,0,0,14,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,144,1,0,0,15,0,0,0,16,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,128,1,0,0,17,0,0,0,18,0,0,0,9,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,112,1,0,0,19,0,0,0,20,0,0,0,10,0,0,0,2,0,0,0,10,0,0,0,0,0,0,0,96,1,0,0,21,0,0,0,22,0,0,0,11,0,0,0,3,0,0,0,11,0,0,0,0,0,0,0,80,1,0,0,23,0,0,0,24,0,0,0,12,0,0,0,4,0,0,0,12,0,0,0,0,0,0,0,64,1,0,0,25,0,0,0,26,0,0,0,13,0,0,0,5,0,0,0,13,0,0,0,0,0,0,0,240,0,0,0,27,0,0,0,28,0,0,0,14,0,0,0,6,0,0,0,14,0,0,0,0,0,0,0,224,0,0,0,29,0,0,0,30,0,0,0,15,0,0,0,7,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,31,0,0,0,32,0,0,0,16,0,0,0,8,0,0,0,16,0,0,0,0,0,0,0,200,0,0,0,33,0,0,0,34,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,184,0,0,0,33,0,0,0,35,0,0,0,3,0,0,0,4,0,0,0,56,0,0,0,0,0,0,0,216,3,0,0,36,0,0,0,37,0,0,0,200,255,255,255,200,255,255,255,216,3,0,0,38,0,0,0,39,0,0,0,56,0,0,0,0,0,0,0,104,0,0,0,40,0,0,0,41,0,0,0,200,255,255,255,200,255,255,255,104,0,0,0,42,0,0,0,43,0,0,0,0,0,0,0,88,0,0,0,44,0,0,0,45,0,0,0,17,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,17,0,0,0,3,0,0,0,18,0,0,0,104,141,0,0,64,141,0,0,84,141,0,0,124,141,0,0,0,0,0,0,32,0,0,0,46,0,0,0,47,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,56,0,0,0,48,0,0,0,49,0,0,0,8,0,0,0,9,0,0,0,0,0,0,0,72,0,0,0,50,0,0,0,51,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,120,0,0,0,52,0,0,0,53,0,0,0,12,0,0,0,13,0,0,0,0,0,0,0,136,0,0,0,54,0,0,0,55,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,152,0,0,0,56,0,0,0,57,0,0,0,16,0,0,0,17,0,0,0,0,0,0,0,168,0,0,0,58,0,0,0,59,0,0,0,18,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,216,0,0,0,60,0,0,0,61,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,62,0,0,0,63,0,0,0,20,0,0,0,21,0,0,0,0,0,0,0,16,1,0,0,64,0,0,0,65,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,32,1,0,0,66,0,0,0,67,0,0,0,24,0,0,0,25,0,0,0,0,0,0,0,48,1,0,0,68,0,0,0,69,0,0,0,26,0,0,0,27,0,0,0,0,0,0,0,160,1,0,0,70,0,0,0,71,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,24,2,0,0,72,0,0,0,73,0,0,0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,0,0,0,0,40,2,0,0,74,0,0,0,75,0,0,0,18,0,0,0,0,0,0,0,64,2,0,0,76,0,0,0,77,0,0,0,19,0,0,0,2,0,0,0,0,0,0,0,80,2,0,0,78,0,0,0,79,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,104,2,0,0,80,0,0,0,81,0,0,0,7,0,0,0,0,0,0,0,128,2,0,0,82,0,0,0,83,0,0,0,8,0,0,0,0,0,0,0,160,2,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,6,0,0,0,2,0,0,0,9,0,0,0,28,0,0,0,0,0,0,0,208,2,0,0,84,0,0,0,88,0,0,0,86,0,0,0,87,0,0,0,6,0,0,0,3,0,0,0,10,0,0,0,29,0,0,0,0,0,0,0,224,2,0,0,84,0,0,0,89,0,0,0,86,0,0,0,87,0,0,0,6,0,0,0,4,0,0,0,11,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,1,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,88,146,0,0,200,146,0,0,56,147,0,0,56,147,0,0,120,187,0,0,168,155,0,0,168,149,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,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,0,0,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,8,0,0,0,9,0,0,0,159,219,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,9,0,0,0,0,0,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,10,0,0,0,0,0,0,0,9,0,0,0,151,215,0,0,0,4,0,0,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,0,0,0,0,0,0,0,0,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,9,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,9,0,0,0,143,211,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,89,0,0,0,90,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+35640);allocate([1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,91,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,116,0,0,0,117,0,0,0,118,0,0,0,119,0,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,124,0,0,0,125,0,0,0,126,0,0,0,127],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+39844);allocate([240,2,0,0,90,0,0,0,91,0,0,0,20,0,0,0,12,0,0,0,5,0,0,0,31,0,0,0,10,0,0,0,11,0,0,0,13,0,0,0,12,0,0,0,13,0,0,0,19,0,0,0,14,0,0,0,20,0,0,0,0,0,0,0,0,3,0,0,90,0,0,0,92,0,0,0,21,0,0,0,12,0,0,0,5,0,0,0,31,0,0,0,14,0,0,0,11,0,0,0,13,0,0,0,15,0,0,0,16,0,0,0,21,0,0,0,15,0,0,0,22,0,0,0,0,0,0,0,16,3,0,0,93,0,0,0,94,0,0,0,22,0,0,0,1,0,0,0,6,0,0,0,32,0,0,0,17,0,0,0,2,0,0,0,2,0,0,0,18,0,0,0,4,0,0,0,23,0,0,0,16,0,0,0,24,0,0,0,0,0,0,0,32,3,0,0,93,0,0,0,95,0,0,0,23,0,0,0,1,0,0,0,6,0,0,0,32,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,19,0,0,0,20,0,0,0,25,0,0,0,3,0,0,0,26,0,0,0,0,0,0,0,56,3,0,0,96,0,0,0,97,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,3,0,0,93,0,0,0,98,0,0,0,17,0,0,0,1,0,0,0,6,0,0,0,32,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,18,0,0,0,4,0,0,0,23,0,0,0,3,0,0,0,26,0,0,0,0,0,0,0,160,3,0,0,90,0,0,0,99,0,0,0,24,0,0,0,12,0,0,0,5,0,0,0,31,0,0,0,14,0,0,0,11,0,0,0,13,0,0,0,12,0,0,0,13,0,0,0,19,0,0,0,15,0,0,0,22,0,0,0,8,0,0,0,0,0,0,0,168,3,0,0,100,0,0,0,101,0,0,0,248,255,255,255,248,255,255,255,168,3,0,0,102,0,0,0,103,0,0,0,8,0,0,0,0,0,0,0,192,3,0,0,104,0,0,0,105,0,0,0,248,255,255,255,248,255,255,255,192,3,0,0,106,0,0,0,107,0,0,0,4,0,0,0,0,0,0,0,216,3,0,0,36,0,0,0,37,0,0,0,252,255,255,255,252,255,255,255,216,3,0,0,38,0,0,0,39,0,0,0,4,0,0,0,0,0,0,0,240,3,0,0,108,0,0,0,109,0,0,0,252,255,255,255,252,255,255,255,240,3,0,0,110,0,0,0,111,0,0,0,0,0,0,0,96,3,0,0,112,0,0,0,113,0,0,0,7,0,0,0,0,0,0,0,112,3,0,0,114,0,0,0,115,0,0,0,0,0,0,0,8,4,0,0,72,0,0,0,116,0,0,0,21,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,117,0,0,0,118,0,0,0,119,0,0,0,1,0,0,0,33,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,120,0,0,0,121,0,0,0,119,0,0,0,2,0,0,0,34,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,5,0,0,122,0,0,0,123,0,0,0,119,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,5,0,0,124,0,0,0,125,0,0,0,119,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,5,0,0,126,0,0,0,127,0,0,0,119,0,0,0,3,0,0,0,4,0,0,0,23,0,0,0,5,0,0,0,24,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,5,0,0,128,0,0,0,129,0,0,0,119,0,0,0,7,0,0,0,8,0,0,0,25,0,0,0,9,0,0,0,26,0,0,0,3,0,0,0,4,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,5,0,0,130,0,0,0,131,0,0,0,119,0,0,0,22,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,31,0,0,0,1,0,0,0,248,255,255,255,224,5,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,6,0,0,132,0,0,0,133,0,0,0,119,0,0,0,30,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,2,0,0,0,248,255,255,255,8,6,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,6,0,0,134,0,0,0,135,0,0,0,119,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,6,0,0,136,0,0,0,137,0,0,0,119,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,6,0,0,138,0,0,0,139,0,0,0,119,0,0,0,38,0,0,0,39,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,40,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,6,0,0,140,0,0,0,141,0,0,0,119,0,0,0,41,0,0,0,42,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,43,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,6,0,0,142,0,0,0,143,0,0,0,119,0,0,0,44,0,0,0,45,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,46,0,0,0,41,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,6,0,0,144,0,0,0,145,0,0,0,119,0,0,0,47,0,0,0,48,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,49,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,6,0,0,146,0,0,0,147,0,0,0,119,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,7,0,0,148,0,0,0,149,0,0,0,119,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,7,0,0,150,0,0,0,151,0,0,0,119,0,0,0,1,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,7,0,0,152,0,0,0,153,0,0,0,119,0,0,0,2,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,154,0,0,0,155,0,0,0,119,0,0,0,19,0,0,0,7,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,7,0,0,156,0,0,0,157,0,0,0,119,0,0,0,20,0,0,0,8,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,4,0,0,158,0,0,0,159,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,5,0,0,160,0,0,0,161,0,0,0,119,0,0,0,27,0,0,0,21,0,0,0,28,0,0,0,22,0,0,0,29,0,0,0,9,0,0,0,23,0,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,208,4,0,0,162,0,0,0,163,0,0,0,119,0,0,0,3,0,0,0,4,0,0,0,12,0,0,0,50,0,0,0,51,0,0,0,13,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,5,0,0,164,0,0,0,165,0,0,0,119,0,0,0,53,0,0,0,54,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,0,0,0,0,80,5,0,0,166,0,0,0,167,0,0,0,119,0,0,0,55,0,0,0,56,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,0,0,0,0,32,4,0,0,168,0,0,0,169,0,0,0,119,0,0,0,0,0,0,0,48,4,0,0,168,0,0,0,170,0,0,0,119,0,0,0,24,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,30,0,0,0,25,0,0,0,31,0,0,0,26,0,0,0,32,0,0,0,13,0,0,0,27,0,0,0,14,0,0,0,0,0,0,0,80,4,0,0,168,0,0,0,171,0,0,0,119,0,0,0,5,0,0,0,6,0,0,0,15,0,0,0,57,0,0,0,58,0,0,0,16,0,0,0,59,0,0,0,0,0,0,0,112,4,0,0,168,0,0,0,172,0,0,0,119,0,0,0,7,0,0,0,8,0,0,0,17,0,0,0,60,0,0,0,61,0,0,0,18,0,0,0,62,0,0,0,0,0,0,0,144,4,0,0,168,0,0,0,173,0,0,0,119,0,0,0,9,0,0,0,10,0,0,0,19,0,0,0,63,0,0,0,64,0,0,0,20,0,0,0,65,0,0,0,0,0,0,0,176,4,0,0,168,0,0,0,174,0,0,0,119,0,0,0,9,0,0,0,10,0,0,0,19,0,0,0,63,0,0,0,64,0,0,0,20,0,0,0,65,0,0,0,0,0,0,0,192,4,0,0,168,0,0,0,175,0,0,0,119,0,0,0,9,0,0,0,10,0,0,0,19,0,0,0,63,0,0,0,64,0,0,0,20,0,0,0,65,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,37,0,0,0,89,0,0,0,45,0,0,0,37,0,0,0,109,0,0,0,45,0,0,0,37,0,0,0,100,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,114,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,97,0,0,0,108,0,0,0,115,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,110,0,0,0,101,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,114,0,0,0,115,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,117,0,0,0,114,0,0,0,100,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,83,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,77,0,0,0,111,0,0,0,110,0,0,0,0,0,0,0,84,0,0,0,117,0,0,0,101,0,0,0,0,0,0,0,87,0,0,0,101,0,0,0,100,0,0,0,0,0,0,0,84,0,0,0,104,0,0,0,117,0,0,0,0,0,0,0,70,0,0,0,114,0,0,0,105,0,0,0,0,0,0,0,83,0,0,0,97,0,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,114,0,0,0,117,0,0,0,97,0,0,0,114,0,0,0,121,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,99,0,0,0,104,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,105,0,0,0,108,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,121,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,101,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,121,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,117,0,0,0,115,0,0,0,116,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,116,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,111,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,101,0,0,0,109,0,0,0,98,0,0,0,101,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,97,0,0,0,110,0,0,0,0,0,0,0,70,0,0,0,101,0,0,0,98,0,0,0,0,0,0,0,77,0,0,0,97,0,0,0,114,0,0,0,0,0,0,0,65,0,0,0,112,0,0,0,114,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,110,0,0,0,0,0,0,0,74,0,0,0,117,0,0,0,108,0,0,0,0,0,0,0,65,0,0,0,117,0,0,0,103,0,0,0,0,0,0,0,83,0,0,0,101,0,0,0,112,0,0,0,0,0,0,0,79,0,0,0,99,0,0,0,116,0,0,0,0,0,0,0,78,0,0,0,111,0,0,0,118,0,0,0,0,0,0,0,68,0,0,0,101,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,77,0,0,0,0,0,0,0,80,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,109,0,0,0,47,0,0,0,37,0,0,0,100,0,0,0,47,0,0,0,37,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,97,0,0,0,32,0,0,0,37,0,0,0,98,0,0,0,32,0,0,0,37,0,0,0,100,0,0,0,32,0,0,0,37,0,0,0,72,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,0,0,0,73,0,0,0,58,0,0,0,37,0,0,0,77,0,0,0,58,0,0,0,37,0,0,0,83,0,0,0,32,0,0,0,37,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,32,2,32,2,32,2,32,2,32,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,96,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,8,216,4,192,4,192,4,192,4,192,4,192,4,192,4,192,8,213,8,213,8,213,8,213,8,213,8,213,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,8,197,4,192,4,192,4,192,4,192,4,192,4,192,8,214,8,214,8,214,8,214,8,214,8,214,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,8,198,4,192,4,192,4,192,4,192,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,97,119,83,116,114,101,97,109,32,111,114,32,114,97,119,68,97,116,97,32,110,101,101,100,115,32,116,111,32,114,101,102,101,114,101,110,99,101,32,116,111,32,115,111,109,101,116,104,105,110,103,0,119,105,100,116,104,32,110,101,101,100,115,32,116,111,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,91,49,44,32,54,53,53,51,53,93,0,104,101,105,103,104,116,32,110,101,101,100,115,32,116,111,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,91,49,44,32,54,53,53,51,53,93,0,98,105,116,115,112,101,114,115,97,109,112,108,101,32,110,101,101,100,115,32,116,111,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,91,50,44,32,49,54,93,0,105,110,116,101,114,108,101,97,118,101,77,111,100,101,32,110,101,101,100,115,32,116,111,32,98,101,32,115,101,116,32,116,111,32,97,32,118,97,108,117,101,32,111,102,32,123,78,111,110,101,44,32,83,97,109,112,108,101,44,32,76,105,110,101,125,0,99,111,109,112,111,110,101,110,116,115,32,110,101,101,100,115,32,116,111,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,91,49,44,32,50,53,53,93,0,117,110,99,111,109,112,114,101,115,115,101,100,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,119,105,116,104,32,116,104,101,32,111,116,104,101,114,32,112,97,114,97,109,101,116,101,114,115,0,105,110,116,101,114,108,101,97,118,101,77,111,100,101,32,99,97,110,110,111,116,32,98,101,32,115,101,116,32,116,111,32,83,97,109,112,108,101,32,105,110,32,99,111,109,98,105,110,97,116,105,111,110,32,119,105,116,104,32,99,111,109,112,111,110,101,110,116,115,32,61,32,52,0,105,110,116,101,114,108,101,97,118,101,77,111,100,101,32,99,97,110,32,111,110,108,121,32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,32,105,110,32,99,111,109,98,105,110,97,116,105,111,110,32,119,105,116,104,32,99,111,109,112,111,110,101,110,116,115,32,61,32,49,0,67,111,108,111,114,32,116,114,97,110,115,102,111,114,109,97,116,105,111,110,32,0,78,111,32,109,111,114,101,32,98,121,116,101,115,32,97,118,97,105,108,97,98,108,101,32,105,110,32,105,110,112,117,116,32,98,117,102,102,101,114,44,32,115,116,105,108,108,32,110,101,101,100,101,100,105,110,103,32,0,65,110,32,111,100,100,32,110,117,109,98,101,114,32,111,102,32,98,121,116,101,115,32,40,0,41,32,99,97,110,110,111,116,32,98,101,32,115,119,97,112,112,101,100,46,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,54,84,114,97,110,115,102,111,114,109,83,104,105,102,116,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,51,73,116,69,69,69,0,49,49,80,114,111,99,101,115,115,76,105,110,101,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,54,84,114,97,110,115,102,111,114,109,83,104,105,102,116,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,50,73,116,69,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,54,84,114,97,110,115,102,111,114,109,83,104,105,102,116,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,49,73,116,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,105,110,103,98,117,102,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,49,57,98,97,115,105,99,95,111,115,116,114,105,110,103,115,116,114,101,97,109,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,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,51,73,116,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,50,73,116,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,49,73,116,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,51,84,114,97,110,115,102,111,114,109,78,111,110,101,73,116,69,69,0,50,50,80,111,115,116,80,114,111,99,101,115,83,105,110,103,108,101,83,116,114,101,97,109,0,50,53,80,111,115,116,80,114,111,99,101,115,83,105,110,103,108,101,67,111,109,112,111,110,101,110,116,0,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,116,116,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,116,55,84,114,105,112,108,101,116,73,116,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,51,73,104,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,50,73,104,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,50,84,114,97,110,115,102,111,114,109,72,112,49,73,104,69,69,0,49,56,80,114,111,99,101,115,115,84,114,97,110,115,102,111,114,109,101,100,73,49,51,84,114,97,110,115,102,111,114,109,78,111,110,101,73,104,69,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,104,55,84,114,105,112,108,101,116,73,104,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,116,76,105,49,54,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,116,76,105,49,50,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,104,76,105,56,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,55,84,114,105,112,108,101,116,73,104,69,76,105,56,69,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,104,104,69,49,53,69,110,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,116,116,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,116,55,84,114,105,112,108,101,116,73,116,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,104,55,84,114,105,112,108,101,116,73,104,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,116,76,105,49,54,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,116,76,105,49,50,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,104,76,105,56,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,53,76,111,115,115,108,101,115,115,84,114,97,105,116,115,84,73,55,84,114,105,112,108,101,116,73,104,69,76,105,56,69,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,56,74,108,115,67,111,100,101,99,73,49,52,68,101,102,97,117,108,116,84,114,97,105,116,115,84,73,104,104,69,49,53,68,101,99,111,100,101,114,83,116,114,97,116,101,103,121,69,0,67,104,97,114,76,83,32,101,114,114,111,114,0,99,104,97,114,108,115,0,49,53,99,104,97,114,108,115,95,99,97,116,101,103,111,114,121,0,112,97,114,97,109,115,46,88,116,104,117,109,98,110,97,105,108,32,105,115,32,62,32,48,32,98,117,116,32,112,97,114,97,109,115,46,116,104,117,109,98,110,97,105,108,32,61,61,32,110,117,108,108,95,112,116,114,0,49,55,74,112,101,103,77,97,114,107,101,114,83,101,103,109,101,110,116,0,49,49,74,112,101,103,83,101,103,109,101,110,116,0,50,48,74,112,101,103,73,109,97,103,101,68,97,116,97,83,101,103,109,101,110,116,0,69,120,112,101,99,116,101,100,32,74,80,69,71,32,77,97,114,107,101,114,32,115,116,97,114,116,32,98,121,116,101,32,48,120,70,70,32,98,117,116,32,116,104,101,32,98,121,116,101,32,118,97,108,117,101,32,119,97,115,32,48,120,0,74,80,69,71,32,101,110,99,111,100,105,110,103,32,119,105,116,104,32,109,97,114,107,101,114,32,0,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,0,85,110,107,110,111,119,110,32,74,80,69,71,32,109,97,114,107,101,114,32,0,32,101,110,99,111,117,110,116,101,114,101,100,46,0,109,114,102,120,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,49,51,114,117,110,116,105,109,101,95,101,114,114,111,114,0,83,116,57,116,121,112,101,95,105,110,102,111,0,83,116,56,98,97,100,95,99,97,115,116,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,49,57,95,95,112,111,105,110,116,101,114,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,112,98,97,115,101,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,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,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,99,104,97,102,101,121,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,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,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,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,99,104,97,102,101,121,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,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,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,116,104,114,101,119,32,97,110,32,101,120,99,101,112,116,105,111,110,0,115,116,100,58,58,98,97,100,95,99,97,115,116,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,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],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+42396);allocate([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,80,79,83,73,88],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+52636);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,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,119,69,69,0,117,110,115,117,112,112,111,114,116,101,100,32,108,111,99,97,108,101,32,102,111,114,32,115,116,97,110,100,97,114,100,32,105,110,112,117,116,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,115,116,100,111,117,116,98,117,102,73,99,69,69,0,78,83,116,51,95,95,49,49,48,95,95,115,116,100,105,110,98,117,102,73,99,69,69,0,78,83,116,51,95,95,49,49,52,95,95,115,104,97,114,101,100,95,99,111,117,110,116,69,0,78,83,116,51,95,95,49,49,50,115,121,115,116,101,109,95,101,114,114,111,114,69,0,78,83,116,51,95,95,49,49,52,101,114,114,111,114,95,99,97,116,101,103,111,114,121,69,0,78,83,116,51,95,95,49,49,50,95,95,100,111,95,109,101,115,115,97,103,101,69,0,58,32,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,55,102,97,105,108,117,114,101,69,0,78,83,116,51,95,95,49,56,105,111,115,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,57,98,97,115,105,99,95,105,111,115,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,53,98,97,115,105,99,95,115,116,114,101,97,109,98,117,102,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,105,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,0,78,83,116,51,95,95,49,49,51,98,97,115,105,99,95,111,115,116,114,101,97,109,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,57,95,95,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,69,0,105,111,115,95,98,97,115,101,58,58,99,108,101,97,114,0,105,111,115,116,114,101,97,109,0,117,110,115,112,101,99,105,102,105,101,100,32,105,111,115,116,114,101,97,109,95,99,97,116,101,103,111,114,121,32,101,114,114,111,114,0,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,65,66,67,68,69,70,120,88,43,45,112,80,105,73,110,78,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,102,97,99,101,116,69,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,119,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,99,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,115,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,68,105,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,49,54,95,95,110,97,114,114,111,119,95,116,111,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,49,49,55,95,95,119,105,100,101,110,95,102,114,111,109,95,117,116,102,56,73,76,106,51,50,69,69,69,0,78,83,116,51,95,95,49,55,99,111,100,101,99,118,116,73,119,99,49,49,95,95,109,98,115,116,97,116,101,95,116,69,69,0,78,83,116,51,95,95,49,54,108,111,99,97,108,101,53,95,95,105,109,112,69,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,99,69,69,0,78,83,116,51,95,95,49,55,99,111,108,108,97,116,101,73,119,69,69,0,78,83,116,51,95,95,49,53,99,116,121,112,101,73,99,69,69,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,99,69,69,0,78,83,116,51,95,95,49,56,110,117,109,112,117,110,99,116,73,119,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,55,110,117,109,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,116,105,109,101,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,48,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,99,76,98,49,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,48,69,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,112,117,110,99,116,73,119,76,98,49,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,99,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,103,101,116,73,119,78,83,95,49,57,105,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,99,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,69,69,69,69,0,78,83,116,51,95,95,49,57,109,111,110,101,121,95,112,117,116,73,119,78,83,95,49,57,111,115,116,114,101,97,109,98,117,102,95,105,116,101,114,97,116,111,114,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,69,69,69,69,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,99,69,69,0,78,83,116,51,95,95,49,56,109,101,115,115,97,103,101,115,73,119,69,69,0,37,112,0,67,0,37,0,0,0,0,0,108,0,108,108,0,0,76,0,37,112,0,0,0,0,37,72,58,37,77,58,37,83,37,109,47,37,100,47,37,121,37,89,45,37,109,45,37,100,37,73,58,37,77,58,37,83,32,37,112,37,72,58,37,77,37,72,58,37,77,58,37,83,108,111,99,97,108,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,48,49,50,51,52,53,54,55,56,57,0,37,76,102,0,109,111,110,101,121,95,103,101,116,32,101,114,114,111,114,0,48,49,50,51,52,53,54,55,56,57,0,37,46,48,76,102,0,116,114,117,101,0,102,97,108,115,101,0,83,117,110,100,97,121,0,77,111,110,100,97,121,0,84,117,101,115,100,97,121,0,87,101,100,110,101,115,100,97,121,0,84,104,117,114,115,100,97,121,0,70,114,105,100,97,121,0,83,97,116,117,114,100,97,121,0,83,117,110,0,77,111,110,0,84,117,101,0,87,101,100,0,84,104,117,0,70,114,105,0,83,97,116,0,74,97,110,117,97,114,121,0,70,101,98,114,117,97,114,121,0,77,97,114,99,104,0,65,112,114,105,108,0,77,97,121,0,74,117,110,101,0,74,117,108,121,0,65,117,103,117,115,116,0,83,101,112,116,101,109,98,101,114,0,79,99,116,111,98,101,114,0,78,111,118,101,109,98,101,114,0,68,101,99,101,109,98,101,114,0,74,97,110,0,70,101,98,0,77,97,114,0,65,112,114,0,74,117,110,0,74,117,108,0,65,117,103,0,83,101,112,0,79,99,116,0,78,111,118,0,68,101,99,0,65,77,0,80,77,0,37,109,47,37,100,47,37,121,0,37,72,58,37,77,58,37,83,0,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,0,37,73,58,37,77,58,37,83,32,37,112,0,78,83,116,51,95,95,49,49,51,109,101,115,115,97,103,101,115,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,119,69,69,0,78,83,116,51,95,95,49,49,49,95,95,109,111,110,101,121,95,103,101,116,73,99,69,69,0,78,83,116,51,95,95,49,49,48,109,111,110,101,121,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,48,95,95,116,105,109,101,95,112,117,116,69,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,119,69,69,0,78,83,116,51,95,95,49,50,48,95,95,116,105,109,101,95,103,101,116,95,99,95,115,116,111,114,97,103,101,73,99,69,69,0,78,83,116,51,95,95,49,57,116,105,109,101,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,119,69,69,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,112,117,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,112,117,116,73,99,69,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,119,69,69,0,78,83,116,51,95,95,49,49,52,95,95,110,117,109,95,103,101,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,57,95,95,110,117,109,95,103,101,116,73,99,69,69,0,78,83,116,51,95,95,49,49,50,99,111,100,101,99,118,116,95,98,97,115,101,69,0,78,83,116,51,95,95,49,49,48,99,116,121,112,101,95,98,97,115,101,69,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+56215);var tempDoublePtr=Runtime.alignMemory(allocate(12,\"i8\",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}Module[\"_i64Subtract\"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw\"Assertion failed: \"+Pointer_stringify(condition)+\", at: \"+[filename?Pointer_stringify(filename):\"unknown filename\",line,func?Pointer_stringify(func):\"unknown function\"]+\" at \"+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0){if(info.destructor){Runtime.dynCall(\"vi\",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm[\"setTempRet0\"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm[\"setTempRet0\"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module[\"___cxa_is_pointer_type\"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm[\"setTempRet0\"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm[\"setTempRet0\"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0};EXCEPTIONS.last=ptr;if(!(\"uncaught_exception\"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}Module[\"_memset\"]=_memset;var _BDtoILow=true;var _emscripten_resume=true;function ___gxx_personality_v0(){}var _emscripten_landingpad=true;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):\"\"};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value===\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={\"%a\":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),\"%A\":(function(date){return WEEKDAYS[date.tm_wday]}),\"%b\":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),\"%B\":(function(date){return MONTHS[date.tm_mon]}),\"%C\":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),\"%d\":(function(date){return leadingNulls(date.tm_mday,2)}),\"%e\":(function(date){return leadingSomething(date.tm_mday,2,\" \")}),\"%g\":(function(date){return getWeekBasedYear(date).toString().substring(2)}),\"%G\":(function(date){return getWeekBasedYear(date)}),\"%H\":(function(date){return leadingNulls(date.tm_hour,2)}),\"%I\":(function(date){return leadingNulls(date.tm_hour<13?date.tm_hour:date.tm_hour-12,2)}),\"%j\":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),\"%m\":(function(date){return leadingNulls(date.tm_mon+1,2)}),\"%M\":(function(date){return leadingNulls(date.tm_min,2)}),\"%n\":(function(){return\"\\n\"}),\"%p\":(function(date){if(date.tm_hour>0&&date.tm_hour<13){return\"AM\"}else{return\"PM\"}}),\"%S\":(function(date){return leadingNulls(date.tm_sec,2)}),\"%t\":(function(){return\"\\t\"}),\"%u\":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),\"%U\":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?\"01\":\"00\"}),\"%V\":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return\"53\"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return\"01\"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)}),\"%Z\":(function(date){return date.tm_zone}),\"%%\":(function(){return\"%\"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _abort(){Module[\"abort\"]()}function _free(){}Module[\"_free\"]=_free;function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}function ___cxa_end_catch(){if(___cxa_end_catch.rethrown){___cxa_end_catch.rethrown=false;return}asm[\"setThrew\"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall(\"v\",func);_pthread_once.seen[ptr]=1}function ___lock(){}function ___unlock(){}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}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){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}var _fabs=Math_abs;var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}var PATH=undefined;function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method=\"timeout\"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method=\"rAF\"}else if(mode==2){if(!window[\"setImmediate\"]){var setImmediates=[];var emscriptenMainLoopMessageId=\"__emcc\";function Browser_setImmediate_messageHandler(event){if(event.source===window&&event.data===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}window.addEventListener(\"message\",Browser_setImmediate_messageHandler,true);window[\"setImmediate\"]=function Browser_emulated_setImmediate(func){setImmediates.push(func);window.postMessage(emscriptenMainLoopMessageId,\"*\")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){window[\"setImmediate\"](Browser.mainLoop.runner)};Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module[\"noExitRuntime\"]=true;assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker \"'+blocker.name+'\" took '+(Date.now()-start)+\" ms\");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method===\"timeout\"&&Module.ctx){Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\");Browser.mainLoop.method=\"\"}Browser.mainLoop.runIter((function(){if(typeof arg!==\"undefined\"){Runtime.dynCall(\"vi\",func,[arg])}else{Runtime.dynCall(\"v\",func)}}));if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw\"SimulateInfiniteLoop\"}}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module[\"setStatus\"]){var message=Module[\"statusMessage\"]||\"Please wait...\";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src=\"data:audio/x-\"+name.substr(-3)+\";base64,\"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module[\"preloadPlugins\"].push(audioPlugin);var canvas=Module[\"canvas\"];function pointerLockChange(){Browser.pointerLock=document[\"pointerLockElement\"]===canvas||document[\"mozPointerLockElement\"]===canvas||document[\"webkitPointerLockElement\"]===canvas||document[\"msPointerLockElement\"]===canvas}if(canvas){canvas.requestPointerLock=canvas[\"requestPointerLock\"]||canvas[\"mozRequestPointerLock\"]||canvas[\"webkitRequestPointerLock\"]||canvas[\"msRequestPointerLock\"]||(function(){});canvas.exitPointerLock=document[\"exitPointerLock\"]||document[\"mozExitPointerLock\"]||document[\"webkitExitPointerLock\"]||document[\"msExitPointerLock\"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener(\"pointerlockchange\",pointerLockChange,false);document.addEventListener(\"mozpointerlockchange\",pointerLockChange,false);document.addEventListener(\"webkitpointerlockchange\",pointerLockChange,false);document.addEventListener(\"mspointerlockchange\",pointerLockChange,false);if(Module[\"elementPointerLock\"]){canvas.addEventListener(\"click\",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor=\"black\"}else{ctx=canvas.getContext(\"2d\")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx===\"undefined\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer===\"undefined\")Browser.lockPointer=true;if(typeof Browser.resizeCanvas===\"undefined\")Browser.resizeCanvas=false;if(typeof Browser.vrDevice===\"undefined\")Browser.vrDevice=null;var canvas=Module[\"canvas\"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document[\"webkitFullScreenElement\"]||document[\"webkitFullscreenElement\"]||document[\"mozFullScreenElement\"]||document[\"mozFullscreenElement\"]||document[\"fullScreenElement\"]||document[\"fullscreenElement\"]||document[\"msFullScreenElement\"]||document[\"msFullscreenElement\"]||document[\"webkitCurrentFullScreenElement\"])===canvasContainer){canvas.cancelFullScreen=document[\"cancelFullScreen\"]||document[\"mozCancelFullScreen\"]||document[\"webkitCancelFullScreen\"]||document[\"msExitFullscreen\"]||document[\"exitFullscreen\"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module[\"onFullScreen\"])Module[\"onFullScreen\"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener(\"fullscreenchange\",fullScreenChange,false);document.addEventListener(\"mozfullscreenchange\",fullScreenChange,false);document.addEventListener(\"webkitfullscreenchange\",fullScreenChange,false);document.addEventListener(\"MSFullscreenChange\",fullScreenChange,false)}var canvasContainer=document.createElement(\"div\");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer[\"requestFullScreen\"]||canvasContainer[\"mozRequestFullScreen\"]||canvasContainer[\"msRequestFullscreen\"]||(canvasContainer[\"webkitRequestFullScreen\"]?(function(){canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window===\"undefined\"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window[\"requestAnimationFrame\"]||window[\"mozRequestAnimationFrame\"]||window[\"webkitRequestAnimationFrame\"]||window[\"msRequestAnimationFrame\"]||window[\"oRequestAnimationFrame\"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module[\"noExitRuntime\"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{\"jpg\":\"image/jpeg\",\"jpeg\":\"image/jpeg\",\"png\":\"image/png\",\"bmp\":\"image/bmp\",\"ogg\":\"audio/ogg\",\"wav\":\"audio/wav\",\"mp3\":\"audio/mpeg\"}[name.substr(name.lastIndexOf(\".\")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator[\"getUserMedia\"]||navigator[\"mozGetUserMedia\"]}window.getUserMedia(func)}),getMovementX:(function(event){return event[\"movementX\"]||event[\"mozMovementX\"]||event[\"webkitMovementX\"]||0}),getMovementY:(function(event){return event[\"movementY\"]||event[\"mozMovementY\"]||event[\"webkitMovementY\"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case\"DOMMouseScroll\":delta=event.detail;break;case\"mousewheel\":delta=event.wheelDelta;break;case\"wheel\":delta=event[\"deltaY\"];break;default:throw\"unrecognized mouse wheel event: \"+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!=\"mousemove\"&&\"mozMovementX\"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!=\"undefined\"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module[\"canvas\"].getBoundingClientRect();var cw=Module[\"canvas\"].width;var ch=Module[\"canvas\"].height;var scrollX=typeof window.scrollX!==\"undefined\"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!==\"undefined\"?window.scrollY:window.pageYOffset;if(event.type===\"touchstart\"||event.type===\"touchend\"||event.type===\"touchmove\"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type===\"touchstart\"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type===\"touchend\"||event.type===\"touchmove\"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file \"'+url+'\" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency(\"al \"+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file \"'+url+'\" failed.'}}));if(!noRunDep)addRunDependency(\"al \"+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module[\"canvas\"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module[\"canvas\"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!=\"undefined\"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module[\"forcedAspectRatio\"]&&Module[\"forcedAspectRatio\"]>0){if(w/h>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module[\"_i64Add\"]=_i64Add;Module[\"_bitshift64Lshr\"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw\"Pure virtual function called!\"}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall(\"vi\",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_cond_broadcast(){return 0}function ___cxa_guard_acquire(variable){if(!HEAP8[variable>>0]){HEAP8[variable>>0]=1;return 1}return 0}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,\"cannot pop if something else added meanwhile!\");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function ___cxa_guard_release(){}function ___cxa_begin_catch(ptr){__ZSt18uncaught_exceptionv.uncaught_exception--;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _llvm_eh_typeid_for(type){return type}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module[\"_memcpy\"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _pthread_mutex_lock(){}var _emscripten_postinvoke=true;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort(\"cannot dynamically allocate, sbrk now has control\")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}Module[\"_bitshift64Shl\"]=_bitshift64Shl;function ___cxa_guard_abort(){}Module[\"_memmove\"]=_memmove;var _emscripten_preinvoke=true;var _BItoD=true;function _pthread_cond_wait(){return 0}function ___cxa_rethrow(){___cxa_end_catch.rethrown=true;var ptr=EXCEPTIONS.caught.pop();EXCEPTIONS.last=ptr;throw ptr}function _pthread_mutex_unlock(){}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer)___syscall146.buffer=[];var buffer=___syscall146.buffer;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true}\n// EMSCRIPTEN_START_FUNCS\nfunction dc(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function ec(){return r|0}function fc(a){a=a|0;r=a}function gc(a,b){a=a|0;b=b|0;r=a;s=b}function hc(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function ic(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function jc(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function kc(a){a=a|0;M=a}function lc(){return M|0}function mc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;v=r;r=r+128|0;n=v+44|0;q=v+8|0;j=v+4|0;m=v;o=c+4|0;p=c+8|0;x=0;Ja(35,k[c>>2]|0,k[o>>2]|0,k[p>>2]|0,d|0);l=x;x=0;if(!(l&1)){g=n;f=g+84|0;do{k[g>>2]=k[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));d=n+12|0;if((k[d>>2]|0)==0?(h=ia(((k[n+8>>2]|0)+7|0)/8|0,k[n>>2]|0)|0,k[d>>2]=h,(k[n+24>>2]|0)!=0):0){l=ia(k[n+16>>2]|0,h)|0;k[d>>2]=l}x=0;qa(176,q|0);l=x;x=0;if(!(l&1)){d=n+56|0;do if(k[d>>2]|0){x=0;d=ta(66,d|0)|0;l=x;x=0;if(!(l&1)){k[j>>2]=d;f=q+28|0;g=k[f>>2]|0;if(g>>>0<(k[q+32>>2]|0)>>>0){k[g>>2]=d;k[f>>2]=g+4;k[j>>2]=0;s=19;break}x=0;ra(57,q+24|0,j|0);l=x;x=0;if(l&1){f=Wa(824,0)|0;d=M;g=k[j>>2]|0;k[j>>2]=0;if(!g)break;Lb[k[(k[g>>2]|0)+4>>2]&255](g);break}else{d=k[j>>2]|0;k[j>>2]=0;if(!d){s=19;break}Lb[k[(k[d>>2]|0)+4>>2]&255](d);s=19;break}}else s=15}else s=19;while(0);a:do if((s|0)==19){g=n+4|0;h=n+8|0;j=n+16|0;x=0;d=Ea(14,k[n>>2]|0,k[g>>2]|0,k[h>>2]|0,k[j>>2]|0)|0;l=x;x=0;if(!(l&1)){k[m>>2]=d;l=q+28|0;f=k[l>>2]|0;do if(f>>>0>=(k[q+32>>2]|0)>>>0){x=0;ra(57,q+24|0,m|0);f=x;x=0;if(f&1){f=Wa(824,0)|0;d=M;g=k[m>>2]|0;k[m>>2]=0;if(!g)break a;Lb[k[(k[g>>2]|0)+4>>2]&255](g);break a}else{d=k[m>>2]|0;k[m>>2]=0;if(!d)break;Lb[k[(k[d>>2]|0)+4>>2]&255](d);break}}else{k[f>>2]=d;k[l>>2]=f+4;k[m>>2]=0}while(0);d=k[n+28>>2]|0;if((d|0)!=0?(x=0,ra(58,q|0,d|0),s=x,x=0,s&1):0){s=15;break}b:do if(!(k[n+24>>2]|0)){d=ia(k[g>>2]|0,k[n>>2]|0)|0;d=ia(d,((k[h>>2]|0)+7|0)/8|0)|0;if((k[j>>2]|0)>0){g=0;while(1){x=0;Fa(4,q|0,c|0,n|0);s=x;x=0;if(s&1)break;f=k[o>>2]|0;if(f){k[o>>2]=f+d;k[p>>2]=(k[p>>2]|0)-d}g=g+1|0;if((g|0)>=(k[j>>2]|0))break b}f=Wa(824,0)|0;d=M;s=16;break a}}else{x=0;Fa(4,q|0,c|0,n|0);s=x;x=0;if(s&1){s=15;break a}}while(0);x=0;Aa(33,q|0,a|0)|0;s=x;x=0;if(!(s&1)){k[b>>2]=k[q+16>>2];if(e)i[e>>0]=0;g=q+24|0;d=k[g>>2]|0;if(d){f=k[l>>2]|0;if((f|0)!=(d|0)){do{e=f+-4|0;k[l>>2]=e;f=k[e>>2]|0;k[e>>2]=0;if(f)Lb[k[(k[f>>2]|0)+4>>2]&255](f);f=k[l>>2]|0}while((f|0)!=(d|0));d=k[g>>2]|0}mj(d)}e=0;r=v;return e|0}else s=15}else s=15}while(0);if((s|0)==15){f=Wa(824,0)|0;d=M;s=16}l=q+24|0;g=k[l>>2]|0;if(g){j=q+28|0;h=k[j>>2]|0;if((h|0)!=(g|0)){do{q=h+-4|0;k[j>>2]=q;h=k[q>>2]|0;k[q>>2]=0;if(h)Lb[k[(k[h>>2]|0)+4>>2]&255](h);h=k[j>>2]|0}while((h|0)!=(g|0));g=k[l>>2]|0}mj(g)}}else s=5}else s=5;if((s|0)==5){f=Wa(824,0)|0;d=M}q=(d|0)==(ab(824)|0);h=cb(f|0)|0;d=(e|0)==0;if(!q){if(!d)i[e>>0]=0;eb();e=14;r=v;return e|0}g=h+12|0;do if(!d){d=k[g>>2]|0;x=0;f=Da(1)|0;q=x;x=0;if(!(q&1))if((d|0)==(f|0)){wl(e,Ob[k[(k[h>>2]|0)+8>>2]&127](h)|0)|0;s=60;break}else{i[e>>0]=0;s=60;break}}else s=60;while(0);if((s|0)==60?(t=k[g>>2]|0,x=0,u=Da(1)|0,e=x,x=0,!(e&1)):0){e=(t|0)==(u|0)?k[h+8>>2]|0:13;eb();r=v;return e|0}d=Wa()|0;x=0;Ga(3);v=x;x=0;if(v&1){v=Wa(0)|0;oc(v)}else fb(d|0);return 0}function nc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;j=r;r=r+112|0;f=j+96|0;i=j+84|0;l=j+72|0;m=j+60|0;n=j+48|0;o=j+36|0;p=j+24|0;q=j+12|0;s=j;h=(b|0)==0;if((a|0)==0&h){e=Va(16)|0;x=0;Fa(5,f|0,48504,52);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,f|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(f);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}g=k[d>>2]|0;if((g+-1|0)>>>0>65534){e=Va(16)|0;x=0;Fa(5,i|0,48557,41);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,i|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(i);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}f=k[d+4>>2]|0;if((f+-1|0)>>>0>65534){e=Va(16)|0;x=0;Fa(5,l|0,48599,42);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,l|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(l);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}e=k[d+8>>2]|0;if((e+-2|0)>>>0>14){e=Va(16)|0;x=0;Fa(5,m|0,48642,46);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,m|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(m);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}a=k[d+24>>2]|0;if(a>>>0>=3){e=Va(16)|0;x=0;Fa(5,n|0,48689,65);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,n|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(n);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}b=k[d+16>>2]|0;if((b+-1|0)>>>0>254){e=Va(16)|0;x=0;Fa(5,o|0,48755,44);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,o|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(o);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}if(!h?(o=ia(f,g)|0,(ia(ia(o,(e|0)>8?2:1)|0,b)|0)>>>0>c>>>0):0){e=Va(16)|0;x=0;Fa(5,p|0,48800,58);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,p|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(p);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}switch(b|0){case 4:{if((a|0)!=2){r=j;return}e=Va(16)|0;x=0;Fa(5,q|0,48859,73);s=x;x=0;if(!(s&1)){x=0;b=Da(1)|0;s=x;x=0;if(!(s&1)?(x=0,Ja(36,e|0,1,b|0,q|0),s=x,x=0,!(s&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(q);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}case 3:{r=j;return}default:{if(!a){r=j;return}e=Va(16)|0;x=0;Fa(5,s|0,48933,73);q=x;x=0;if(!(q&1)){x=0;b=Da(1)|0;q=x;x=0;if(!(q&1)?(x=0,Ja(36,e|0,1,b|0,s|0),q=x,x=0,!(q&1)):0){x=0;Fa(6,e|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(s);if(!a){s=b;fb(s|0)}}else b=Wa()|0;Ua(e|0);s=b;fb(s|0)}}}function oc(a){a=a|0;cb(a|0)|0;tj()}function pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+128|0;f=m+116|0;g=m;x=0;k[f>>2]=k[b>>2];k[f+4>>2]=k[b+4>>2];k[f+8>>2]=k[b+8>>2];ra(59,g|0,f|0);e=x;x=0;if(!(e&1)){if(c){e=g+16|0;b=e+84|0;do{k[e>>2]=k[c>>2];e=e+4|0;c=c+4|0}while((e|0)<(b|0))}x=0;k[f>>2]=k[a>>2];k[f+4>>2]=k[a+4>>2];k[f+8>>2]=k[a+8>>2];ra(60,g|0,f|0);g=x;x=0;if(!(g&1)){if(d)i[d>>0]=0;l=0;r=m;return l|0}}a=Wa(824,0)|0;g=M;g=(g|0)==(ab(824)|0);a=cb(a|0)|0;b=(d|0)==0;if(!g){if(!b)i[d>>0]=0;eb();l=14;r=m;return l|0}e=a+12|0;do if(!b){b=k[e>>2]|0;x=0;c=Da(1)|0;g=x;x=0;if(!(g&1))if((b|0)==(c|0)){wl(d,Ob[k[(k[a>>2]|0)+8>>2]&127](a)|0)|0;l=10;break}else{i[d>>0]=0;l=10;break}}else l=10;while(0);if((l|0)==10?(h=k[e>>2]|0,x=0,j=Da(1)|0,l=x,x=0,!(l&1)):0){l=(h|0)==(j|0)?k[a+8>>2]|0:13;eb();r=m;return l|0}b=Wa()|0;x=0;Ga(3);m=x;x=0;if(m&1){m=Wa(0)|0;oc(m)}else fb(b|0);return 0}function qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=r;r=r+128|0;e=j+116|0;d=j;x=0;k[e>>2]=k[a>>2];k[e+4>>2]=k[a+4>>2];k[e+8>>2]=k[a+8>>2];ra(59,d|0,e|0);e=x;x=0;if((!(e&1)?(x=0,qa(177,d|0),e=x,x=0,!(e&1)):0)?(x=0,ra(61,d|0,1),e=x,x=0,!(e&1)):0){a=d+16|0;d=b+84|0;do{k[b>>2]=k[a>>2];b=b+4|0;a=a+4|0}while((b|0)<(d|0));if(c)i[c>>0]=0;c=0;r=j;return c|0}e=Wa(824,0)|0;b=M;b=(b|0)==(ab(824)|0);e=cb(e|0)|0;a=(c|0)==0;if(!b){if(!a)i[c>>0]=0;eb();c=14;r=j;return c|0}b=e+12|0;do if(!a){a=k[b>>2]|0;x=0;d=Da(1)|0;l=x;x=0;if(!(l&1))if((a|0)==(d|0)){wl(c,Ob[k[(k[e>>2]|0)+8>>2]&127](e)|0)|0;h=13;break}else{i[c>>0]=0;h=13;break}}else h=13;while(0);if((h|0)==13?(f=k[b>>2]|0,x=0,g=Da(1)|0,l=x,x=0,!(l&1)):0){l=(f|0)==(g|0)?k[e+8>>2]|0:13;eb();r=j;return l|0}a=Wa()|0;x=0;Ga(3);l=x;x=0;if(l&1){l=Wa(0)|0;oc(l)}else fb(a|0);return 0}function rc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0;m=r;r=r+48|0;i=m+36|0;h=m+24|0;j=m+12|0;l=m;if(!((a|0)!=0&(c|0)!=0&(d|0)!=0&(f|0)!=0)){e=1;r=m;return e|0}k[j>>2]=0;k[j+4>>2]=a;k[j+8>>2]=b;k[l>>2]=0;k[l+4>>2]=d;k[l+8>>2]=e;k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[i+8>>2]=k[l+8>>2];e=mc(h,c,i,f,g)|0;r=m;return e|0}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+32|0;f=e+12|0;g=e;h=g;k[h>>2]=0;k[h+4>>2]=0;k[g+4>>2]=a;k[g+8>>2]=b;k[f>>2]=k[g>>2];k[f+4>>2]=k[g+4>>2];k[f+8>>2]=k[g+8>>2];c=qc(f,c,d)|0;r=e;return c|0}function tc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+48|0;h=g+36|0;i=g+24|0;l=g+12|0;j=g;k[l>>2]=0;k[l+4>>2]=a;k[l+8>>2]=b;k[j>>2]=0;k[j+4>>2]=c;k[j+8>>2]=d;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[i+8>>2]=k[l+8>>2];k[h>>2]=k[j>>2];k[h+4>>2]=k[j+4>>2];k[h+8>>2]=k[j+8>>2];d=pc(i,h,e,f)|0;r=g;return d|0}function uc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+4|0;c=k[a>>2]|0;e=((k[j>>2]|0)-c>>2)+1|0;if(e>>>0>1073741823){jj(a);c=k[a>>2]|0}l=a+8|0;d=(k[l>>2]|0)-c|0;if(d>>2>>>0<536870911){d=d>>1;d=d>>>0>>0?e:d;c=(k[j>>2]|0)-c>>2;if(!d){f=0;g=0}else h=6}else{d=1073741823;c=(k[j>>2]|0)-c>>2;h=6}if((h|0)==6){f=d;g=lj(d<<2)|0}e=g+(c<<2)|0;d=e;i=g+(f<<2)|0;h=k[b>>2]|0;k[b>>2]=0;k[e>>2]=h;h=g+(c+1<<2)|0;g=k[a>>2]|0;c=k[j>>2]|0;if((c|0)==(g|0)){e=a;f=j}else{do{c=c+-4|0;b=k[c>>2]|0;k[c>>2]=0;k[e+-4>>2]=b;e=d+-4|0;d=e}while((c|0)!=(g|0));c=d;e=a;f=j;d=c;g=k[a>>2]|0;c=k[j>>2]|0}k[e>>2]=d;k[f>>2]=h;k[l>>2]=i;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=k[c>>2]|0;k[c>>2]=0;if(d)Lb[k[(k[d>>2]|0)+4>>2]&255](d)}while((c|0)!=(e|0));if(!g)return;mj(g);return}function vc(){if(i[8]|0)return 35648;if(!(Qa(8)|0))return 35648;tb(72,35648,w|0)|0;Ya(8);return 35648}function wc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+32|0;j=m;Oi(j,(1<>2]|0;l=f+1|0;c=l<<1;k[a>>2]=0;g=a+4|0;k[g>>2]=0;k[a+8>>2]=0;a:do if(l){if(!((f|0)<-1?(x=0,qa(178,a|0),h=x,x=0,h&1):0))d=4;if((d|0)==4?(x=0,e=ta(67,c|0)|0,h=x,x=0,!(h&1)):0){k[g>>2]=e;k[a>>2]=e;k[a+8>>2]=e+c;b=e;while(1){i[b>>0]=0;b=(k[g>>2]|0)+1|0;k[g>>2]=b;c=c+-1|0;if(!c)break a}}c=Wa()|0;b=k[a>>2]|0;if(!b)fb(c|0);if((k[g>>2]|0)!=(b|0))k[g>>2]=b;mj(b);fb(c|0)}while(0);b=~f;if((f|0)<(b|0)){r=m;return}g=j+12|0;h=j+8|0;f=j+4|0;e=b;do{b=k[g>>2]|0;if((e|0)>(0-b|0)){c=k[h>>2]|0;if((e|0)>(0-c|0)){d=k[f>>2]|0;if((e|0)>(0-d|0))if((e|0)>=0)if((e|0)>0)if((d|0)<=(e|0))if((c|0)>(e|0))b=2;else b=(b|0)>(e|0)?3:4;else b=1;else b=0;else b=-1;else b=-2}else b=-3}else b=-4;i[(k[a>>2]|0)+(e+l)>>0]=b;e=e+1|0}while((e|0)<(l|0));r=m;return}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[c+16>>2]|0;switch(p|0){case 64:case 0:{x=0;a=Aa(34,a|0,b|0)|0;b=x;x=0;if(b&1)q=16;else d=a;break}default:{e=(1<>2])+-1|0;o=k[b+20>>2]|0;n=o<<1;n=((n+e|0)/(n|1|0)|0)+1|0;a=0;while(1)if((1<>2]|0;x=0;d=ta(67,4624)|0;m=x;x=0;if(m&1)q=16;else{f=((g|0)<8?8:g)+g<<1;h=d+4|0;l=b;m=h+84|0;do{k[h>>2]=k[l>>2];h=h+4|0;l=l+4|0}while((h|0)<(m|0));h=d+88|0;m=h+40|0;do{k[h>>2]=0;h=h+4|0}while((h|0)<(m|0));k[d>>2]=35660;k[d+128>>2]=e;k[d+132>>2]=n;k[d+136>>2]=o;k[d+140>>2]=a;k[d+144>>2]=g;k[d+148>>2]=f;k[d+152>>2]=p;a=d+156|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+172>>2]=k[b>>2];k[d+176>>2]=0;k[d+180>>2]=0;k[d+184>>2]=0;a=d+4568|0;e=d+188|0;do{k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;j[e+10>>1]=1;e=e+12|0}while((e|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4580|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4592|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+28>>2]|0))k[d+20>>2]=1}}}if((q|0)==16){q=Wa()|0;fb(q|0)}if(!d)return d|0;x=0;ra(k[(k[d>>2]|0)+12>>2]|0,d|0,c|0);q=x;x=0;if(!(q&1))return d|0;a=Wa()|0;if(!d){q=a;fb(q|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);q=a;fb(q|0);return 0}function yc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0;c=(k[b+24>>2]|0)==2;if(c?(k[b+16>>2]|0)!=3:0){b=0;return b|0}n=k[b+20>>2]|0;a=k[b+8>>2]|0;a:do if(!n){if(c){if((a|0)!=8)break;d=lj(4600)|0;g=d+4|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=d+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[d>>2]=35688;a=d+132|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+148>>2]=k[b>>2];k[d+152>>2]=0;k[d+156>>2]=0;k[d+160>>2]=0;a=d+4544|0;c=d+164|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4556|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4568|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+28>>2]|0))k[d+20>>2]=1;b=d;return b|0}switch(a|0){case 8:{d=lj(4600)|0;g=d+4|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=d+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[d>>2]=35716;a=d+132|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+148>>2]=k[b>>2];k[d+152>>2]=0;k[d+156>>2]=0;k[d+160>>2]=0;a=d+4544|0;c=d+164|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4556|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4568|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+28>>2]|0))k[d+20>>2]=1;b=d;return b|0}case 12:{d=lj(4600)|0;g=d+4|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=d+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[d>>2]=35744;a=d+132|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+148>>2]=k[b>>2];k[d+152>>2]=0;k[d+156>>2]=0;k[d+160>>2]=0;a=d+4544|0;c=d+164|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4556|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4568|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+28>>2]|0))k[d+20>>2]=1;b=d;return b|0}case 16:{d=lj(4600)|0;g=d+4|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=d+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[d>>2]=35772;a=d+132|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+148>>2]=k[b>>2];k[d+152>>2]=0;k[d+156>>2]=0;k[d+160>>2]=0;a=d+4544|0;c=d+164|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4556|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4568|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+28>>2]|0))k[d+20>>2]=1;b=d;return b|0}default:break a}}while(0);m=(1<>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=e+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[e>>2]=35800;k[e+128>>2]=m;k[e+132>>2]=f;k[e+136>>2]=n;k[e+140>>2]=a;k[e+144>>2]=c;k[e+148>>2]=d;k[e+152>>2]=64;a=e+156|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+172>>2]=k[b>>2];k[e+176>>2]=0;k[e+180>>2]=0;k[e+184>>2]=0;a=e+4568|0;c=e+188|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4580|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4592|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+28>>2]|0))k[e+20>>2]=1;b=e;return b|0}else{a=0;while(1)if((1<>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=e+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[e>>2]=35660;k[e+128>>2]=m;k[e+132>>2]=f;k[e+136>>2]=n;k[e+140>>2]=a;k[e+144>>2]=c;k[e+148>>2]=d;k[e+152>>2]=64;a=e+156|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+172>>2]=k[b>>2];k[e+176>>2]=0;k[e+180>>2]=0;k[e+184>>2]=0;a=e+4568|0;c=e+188|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4580|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4592|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+28>>2]|0))k[e+20>>2]=1;b=e;return b|0}}if((a|0)>=17){b=0;return b|0}f=n<<1;f=((f+m|0)/(f|1|0)|0)+1|0;if(c){a=0;while(1)if((1<>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=e+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[e>>2]=35828;k[e+128>>2]=m;k[e+132>>2]=f;k[e+136>>2]=n;k[e+140>>2]=a;k[e+144>>2]=c;k[e+148>>2]=d;k[e+152>>2]=64;a=e+156|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+172>>2]=k[b>>2];k[e+176>>2]=0;k[e+180>>2]=0;k[e+184>>2]=0;a=e+4568|0;c=e+188|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4580|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4592|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+28>>2]|0))k[e+20>>2]=1;b=e;return b|0}else{a=0;while(1)if((1<>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));g=e+88|0;l=g+40|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(l|0));k[e>>2]=35856;k[e+128>>2]=m;k[e+132>>2]=f;k[e+136>>2]=n;k[e+140>>2]=a;k[e+144>>2]=c;k[e+148>>2]=d;k[e+152>>2]=64;a=e+156|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+172>>2]=k[b>>2];k[e+176>>2]=0;k[e+180>>2]=0;k[e+184>>2]=0;a=e+4568|0;c=e+188|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4580|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4592|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+28>>2]|0))k[e+20>>2]=1;b=e;return b|0}return 0}function zc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[c+16>>2]|0;switch(p|0){case 64:case 0:{x=0;a=Aa(35,a|0,b|0)|0;b=x;x=0;if(b&1)q=16;else d=a;break}default:{e=(1<>2])+-1|0;o=k[b+20>>2]|0;n=o<<1;n=((n+e|0)/(n|1|0)|0)+1|0;a=0;while(1)if((1<>2]|0;x=0;d=ta(67,4632)|0;m=x;x=0;if(m&1)q=16;else{f=((g|0)<8?8:g)+g<<1;k[d+4>>2]=0;h=d+8|0;l=b;m=h+84|0;do{k[h>>2]=k[l>>2];h=h+4|0;l=l+4|0}while((h|0)<(m|0));k[d+92>>2]=0;k[d+96>>2]=0;k[d+100>>2]=32;k[d+104>>2]=0;k[d+108>>2]=0;i[d+112>>0]=0;m=d+116|0;k[m>>2]=0;k[m+4>>2]=0;k[m+8>>2]=0;k[m+12>>2]=0;k[m+16>>2]=0;k[d>>2]=35884;k[d+136>>2]=e;k[d+140>>2]=n;k[d+144>>2]=o;k[d+148>>2]=a;k[d+152>>2]=g;k[d+156>>2]=f;k[d+160>>2]=p;a=d+164|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+180>>2]=k[b>>2];k[d+184>>2]=0;k[d+188>>2]=0;k[d+192>>2]=0;a=d+4576|0;e=d+196|0;do{k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;j[e+10>>1]=1;e=e+12|0}while((e|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4588|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4600|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+32>>2]|0))k[d+24>>2]=1}}}if((q|0)==16){q=Wa()|0;fb(q|0)}if(!d)return d|0;x=0;ra(k[(k[d>>2]|0)+8>>2]|0,d|0,c|0);q=x;x=0;if(!(q&1))return d|0;a=Wa()|0;if(!d){q=a;fb(q|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);q=a;fb(q|0);return 0}function Ac(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0;c=(k[b+24>>2]|0)==2;if(c?(k[b+16>>2]|0)!=3:0){b=0;return b|0}n=k[b+20>>2]|0;a=k[b+8>>2]|0;a:do if(!n){if(c){if((a|0)!=8)break;d=lj(4608)|0;k[d+4>>2]=0;g=d+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[d+92>>2]=0;k[d+96>>2]=0;k[d+100>>2]=32;k[d+104>>2]=0;k[d+108>>2]=0;i[d+112>>0]=0;a=d+116|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[d>>2]=35912;a=d+140|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+156>>2]=k[b>>2];k[d+160>>2]=0;k[d+164>>2]=0;k[d+168>>2]=0;a=d+4552|0;c=d+172|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4564|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4576|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+32>>2]|0))k[d+24>>2]=1;b=d;return b|0}switch(a|0){case 8:{d=lj(4608)|0;k[d+4>>2]=0;g=d+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[d+92>>2]=0;k[d+96>>2]=0;k[d+100>>2]=32;k[d+104>>2]=0;k[d+108>>2]=0;i[d+112>>0]=0;a=d+116|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[d>>2]=35940;a=d+140|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+156>>2]=k[b>>2];k[d+160>>2]=0;k[d+164>>2]=0;k[d+168>>2]=0;a=d+4552|0;c=d+172|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4564|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4576|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+32>>2]|0))k[d+24>>2]=1;b=d;return b|0}case 12:{d=lj(4608)|0;k[d+4>>2]=0;g=d+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[d+92>>2]=0;k[d+96>>2]=0;k[d+100>>2]=32;k[d+104>>2]=0;k[d+108>>2]=0;i[d+112>>0]=0;a=d+116|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[d>>2]=35968;a=d+140|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+156>>2]=k[b>>2];k[d+160>>2]=0;k[d+164>>2]=0;k[d+168>>2]=0;a=d+4552|0;c=d+172|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4564|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4576|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+32>>2]|0))k[d+24>>2]=1;b=d;return b|0}case 16:{d=lj(4608)|0;k[d+4>>2]=0;g=d+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[d+92>>2]=0;k[d+96>>2]=0;k[d+100>>2]=32;k[d+104>>2]=0;k[d+108>>2]=0;i[d+112>>0]=0;a=d+116|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[d>>2]=35996;a=d+140|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[d+156>>2]=k[b>>2];k[d+160>>2]=0;k[d+164>>2]=0;k[d+168>>2]=0;a=d+4552|0;c=d+172|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=d+4564|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=d+4576|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[d+32>>2]|0))k[d+24>>2]=1;b=d;return b|0}default:break a}}while(0);m=(1<>2]=0;g=e+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[e+92>>2]=0;k[e+96>>2]=0;k[e+100>>2]=32;k[e+104>>2]=0;k[e+108>>2]=0;i[e+112>>0]=0;l=e+116|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[e>>2]=36024;k[e+136>>2]=m;k[e+140>>2]=f;k[e+144>>2]=n;k[e+148>>2]=a;k[e+152>>2]=c;k[e+156>>2]=d;k[e+160>>2]=64;a=e+164|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+180>>2]=k[b>>2];k[e+184>>2]=0;k[e+188>>2]=0;k[e+192>>2]=0;a=e+4576|0;c=e+196|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4588|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4600|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+32>>2]|0))k[e+24>>2]=1;b=e;return b|0}else{a=0;while(1)if((1<>2]=0;g=e+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[e+92>>2]=0;k[e+96>>2]=0;k[e+100>>2]=32;k[e+104>>2]=0;k[e+108>>2]=0;i[e+112>>0]=0;l=e+116|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[e>>2]=35884;k[e+136>>2]=m;k[e+140>>2]=f;k[e+144>>2]=n;k[e+148>>2]=a;k[e+152>>2]=c;k[e+156>>2]=d;k[e+160>>2]=64;a=e+164|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+180>>2]=k[b>>2];k[e+184>>2]=0;k[e+188>>2]=0;k[e+192>>2]=0;a=e+4576|0;c=e+196|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4588|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4600|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+32>>2]|0))k[e+24>>2]=1;b=e;return b|0}}if((a|0)>=17){b=0;return b|0}f=n<<1;f=((f+m|0)/(f|1|0)|0)+1|0;if(c){a=0;while(1)if((1<>2]=0;g=e+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[e+92>>2]=0;k[e+96>>2]=0;k[e+100>>2]=32;k[e+104>>2]=0;k[e+108>>2]=0;i[e+112>>0]=0;l=e+116|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[e>>2]=36052;k[e+136>>2]=m;k[e+140>>2]=f;k[e+144>>2]=n;k[e+148>>2]=a;k[e+152>>2]=c;k[e+156>>2]=d;k[e+160>>2]=64;a=e+164|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+180>>2]=k[b>>2];k[e+184>>2]=0;k[e+188>>2]=0;k[e+192>>2]=0;a=e+4576|0;c=e+196|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4588|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4600|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+32>>2]|0))k[e+24>>2]=1;b=e;return b|0}else{a=0;while(1)if((1<>2]=0;g=e+8|0;h=b;l=g+84|0;do{k[g>>2]=k[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(l|0));k[e+92>>2]=0;k[e+96>>2]=0;k[e+100>>2]=32;k[e+104>>2]=0;k[e+108>>2]=0;i[e+112>>0]=0;l=e+116|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[e>>2]=36080;k[e+136>>2]=m;k[e+140>>2]=f;k[e+144>>2]=n;k[e+148>>2]=a;k[e+152>>2]=c;k[e+156>>2]=d;k[e+160>>2]=64;a=e+164|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[e+180>>2]=k[b>>2];k[e+184>>2]=0;k[e+188>>2]=0;k[e+192>>2]=0;a=e+4576|0;c=e+196|0;do{k[c>>2]=0;k[c+4>>2]=0;j[c+8>>1]=0;j[c+10>>1]=1;c=c+12|0}while((c|0)!=(a|0));k[a>>2]=0;k[a+4>>2]=0;j[a+8>>1]=0;i[a+10>>0]=0;b=e+4588|0;k[b>>2]=0;k[b+4>>2]=0;j[b+8>>1]=0;i[b+10>>0]=0;b=e+4600|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;i[b+28>>0]=0;if(!(k[e+32>>2]|0))k[e+24>>2]=1;b=e;return b|0}return 0}function Bc(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0;a=2832;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=4880);sw(2832,0,2048)|0;a=0;do{g=2832+(a+128<<3)|0;k[g>>2]=0;k[g+4>>2]=1;a=a+1|0}while((a|0)!=128);a=3088;k[a>>2]=1;k[a+4>>2]=3;a=3096;k[a>>2]=1;k[a+4>>2]=3;a=3104;k[a>>2]=1;k[a+4>>2]=3;a=3112;k[a>>2]=1;k[a+4>>2]=3;a=3120;k[a>>2]=1;k[a+4>>2]=3;a=3128;k[a>>2]=1;k[a+4>>2]=3;a=3136;k[a>>2]=1;k[a+4>>2]=3;a=3144;k[a>>2]=1;k[a+4>>2]=3;a=3152;k[a>>2]=1;k[a+4>>2]=3;a=3160;k[a>>2]=1;k[a+4>>2]=3;a=3168;k[a>>2]=1;k[a+4>>2]=3;a=3176;k[a>>2]=1;k[a+4>>2]=3;a=3184;k[a>>2]=1;k[a+4>>2]=3;a=3192;k[a>>2]=1;k[a+4>>2]=3;a=3200;k[a>>2]=1;k[a+4>>2]=3;a=3208;k[a>>2]=1;k[a+4>>2]=3;a=3216;k[a>>2]=1;k[a+4>>2]=3;a=3224;k[a>>2]=1;k[a+4>>2]=3;a=3232;k[a>>2]=1;k[a+4>>2]=3;a=3240;k[a>>2]=1;k[a+4>>2]=3;a=3248;k[a>>2]=1;k[a+4>>2]=3;a=3256;k[a>>2]=1;k[a+4>>2]=3;a=3264;k[a>>2]=1;k[a+4>>2]=3;a=3272;k[a>>2]=1;k[a+4>>2]=3;a=3280;k[a>>2]=1;k[a+4>>2]=3;a=3288;k[a>>2]=1;k[a+4>>2]=3;a=3296;k[a>>2]=1;k[a+4>>2]=3;a=3304;k[a>>2]=1;k[a+4>>2]=3;a=3312;k[a>>2]=1;k[a+4>>2]=3;a=3320;k[a>>2]=1;k[a+4>>2]=3;a=3328;k[a>>2]=1;k[a+4>>2]=3;a=3336;k[a>>2]=1;k[a+4>>2]=3;a=2896;k[a>>2]=2;k[a+4>>2]=5;a=2904;k[a>>2]=2;k[a+4>>2]=5;a=2912;k[a>>2]=2;k[a+4>>2]=5;a=2920;k[a>>2]=2;k[a+4>>2]=5;a=2928;k[a>>2]=2;k[a+4>>2]=5;a=2936;k[a>>2]=2;k[a+4>>2]=5;a=2944;k[a>>2]=2;k[a+4>>2]=5;a=2952;k[a>>2]=2;k[a+4>>2]=5;a=2848;k[a>>2]=3;k[a+4>>2]=7;a=2856;k[a>>2]=3;k[a+4>>2]=7;a=0;do{g=2832+(a+64<<3)|0;k[g>>2]=-1;k[g+4>>2]=2;a=a+1|0}while((a|0)!=64);a=2960;k[a>>2]=-2;k[a+4>>2]=4;a=2968;k[a>>2]=-2;k[a+4>>2]=4;a=2976;k[a>>2]=-2;k[a+4>>2]=4;a=2984;k[a>>2]=-2;k[a+4>>2]=4;a=2992;k[a>>2]=-2;k[a+4>>2]=4;a=3e3;k[a>>2]=-2;k[a+4>>2]=4;a=3008;k[a>>2]=-2;k[a+4>>2]=4;a=3016;k[a>>2]=-2;k[a+4>>2]=4;a=3024;k[a>>2]=-2;k[a+4>>2]=4;a=3032;k[a>>2]=-2;k[a+4>>2]=4;a=3040;k[a>>2]=-2;k[a+4>>2]=4;a=3048;k[a>>2]=-2;k[a+4>>2]=4;a=3056;k[a>>2]=-2;k[a+4>>2]=4;a=3064;k[a>>2]=-2;k[a+4>>2]=4;a=3072;k[a>>2]=-2;k[a+4>>2]=4;a=3080;k[a>>2]=-2;k[a+4>>2]=4;a=2864;k[a>>2]=-3;k[a+4>>2]=6;a=2872;k[a>>2]=-3;k[a+4>>2]=6;a=2880;k[a>>2]=-3;k[a+4>>2]=6;a=2888;k[a>>2]=-3;k[a+4>>2]=6;a=2840;k[a>>2]=-4;k[a+4>>2]=8;a=4880;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=6928);sw(4880,0,2048)|0;c=2;a=0;e=0;f=0;while(1){c=c<<16>>16;b=8-c|0;d=1<>2]=e;k[g+4>>2]=c;b=b+1|0}while((b|0)<(d|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==7){b=2;e=1;f=-1;g=-1;break}else{c=(a>>1)+2|0;e=b>>16}}while(1){c=b<<16>>16;a=8-c|0;d=1<>2]=f;k[e+4>>2]=c;b=b+1|0}while((b|0)<(d|0))}a=(g<<16)+-65536|0;e=a>>31^a>>15;b=(e>>1)+2|0;if((b|0)>8){a=6928;break}else{f=a>>16;g=g+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=8976);sw(6928,0,2048)|0;e=3;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==12){e=3;b=1;d=-1;f=-1;break}else{e=(a>>2)+3|0;d=b>>16}}while(1){a=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}a=(f<<16)+-65536|0;b=a>>31^a>>15;e=(b>>2)+3|0;if((e|0)>8){a=8976;break}else{d=a>>16;f=f+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=11024);sw(8976,0,2048)|0;e=4;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==20){e=4;b=1;d=-1;f=-1;break}else{e=(a>>3)+4|0;d=b>>16}}while(1){a=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}a=(f<<16)+-65536|0;b=a>>31^a>>15;e=(b>>3)+4|0;if((e|0)>8){a=11024;break}else{d=a>>16;f=f+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=13072);sw(11024,0,2048)|0;e=5;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==32){e=5;b=1;d=-1;f=-1;break}else{e=(a>>4)+5|0;d=b>>16}}while(1){a=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}a=(f<<16)+-65536|0;b=a>>31^a>>15;e=(b>>4)+5|0;if((e|0)>8){a=13072;break}else{d=a>>16;f=f+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=15120);sw(13072,0,2048)|0;e=6;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==48){e=6;b=1;d=-1;f=-1;break}else{e=(a>>5)+6|0;d=b>>16}}while(1){a=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}a=(f<<16)+-65536|0;b=a>>31^a>>15;e=(b>>5)+6|0;if((e|0)>8){a=15120;break}else{d=a>>16;f=f+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=17168);sw(15120,0,2048)|0;e=7;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==64){e=7;b=1;d=-1;f=-1;break}else{e=(a>>6)+7|0;d=b>>16}}while(1){a=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}a=(f<<16)+-65536|0;b=a>>31^a>>15;e=(b>>6)+7|0;if((e|0)>8){a=17168;break}else{d=a>>16;f=f+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=19216);sw(17168,0,2048)|0;e=8;a=0;d=0;f=0;while(1){b=8-e|0;c=1<>2]=d;k[g+4>>2]=e;b=b+1|0}while((b|0)<(c|0))}b=(f<<16)+65536|0;a=b>>31^b>>15;f=f+1|0;if((f|0)==64){f=8;d=1;e=-1;g=-1;break}else{e=(a>>7)+8|0;d=b>>16}}while(1){a=8-f|0;c=1<>2]=e;k[d+4>>2]=f;b=b+1|0}while((b|0)<(c|0))}b=(g<<16)+-65536|0;d=b>>31^b>>15;a=d>>7;if((a|0)>0){a=19216;break}else{f=a+8|0;e=b>>16;g=g+-1|0}}do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=21264);sw(19216,0,2048)|0;a=21264;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=23312);sw(21264,0,2048)|0;a=23312;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=25360);sw(23312,0,2048)|0;a=25360;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=27408);sw(25360,0,2048)|0;a=27408;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=29456);sw(27408,0,2048)|0;a=29456;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=31504);sw(29456,0,2048)|0;a=31504;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=33552);sw(31504,0,2048)|0;a=33552;do{k[a>>2]=0;k[a+4>>2]=0;a=a+8|0}while((a|0)!=35600);sw(33552,0,2048)|0;wc(35600,8);tb(179,35600,w|0)|0;wc(35612,10);tb(179,35612,w|0)|0;wc(35624,12);tb(179,35624,w|0)|0;wc(35636,16);tb(179,35636,w|0)|0;return}function Cc(a){a=a|0;var b=0;b=k[a>>2]|0;if(!b)return;a=a+4|0;if((k[a>>2]|0)!=(b|0))k[a>>2]=b;mj(b);return}function Dc(a){a=a|0;var b=0,c=0;k[a>>2]=36080;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Ec(a){a=a|0;var b=0,c=0;k[a>>2]=36080;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Fc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+136>>2]|0,k[a+144>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+184>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+188>>2]=f;k[a+192>>2]=e;re(a);e=a+140|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+196+(f*12|0)>>2]=b;k[a+196+(f*12|0)+4>>2]=0;j[a+196+(f*12|0)+8>>1]=0;j[a+196+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4576>>2]=h;k[a+4580>>2]=0;i[a+4584>>0]=l;i[a+4585>>0]=1;i[a+4586>>0]=0;k[a+4588>>2]=h;k[a+4592>>2]=1;i[a+4596>>0]=l;i[a+4597>>0]=1;i[a+4598>>0]=0;k[a+4600>>2]=0;r=g;return}function Gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4624)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35856;k[b+128>>2]=k[a+136>>2];k[b+132>>2]=k[a+140>>2];k[b+136>>2]=k[a+144>>2];k[b+140>>2]=k[a+148>>2];k[b+144>>2]=k[a+152>>2];k[b+148>>2]=k[a+156>>2];k[b+152>>2]=k[a+160>>2];e=b+156|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+172>>2]=k[d>>2];k[b+176>>2]=0;k[b+180>>2]=0;k[b+184>>2]=0;e=b+4568|0;d=b+188|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4580|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4592|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];ge(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;ge(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function Hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Ic(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;k[a>>2]=36460;k[a+4>>2]=c;n=a+8|0;f=k[c>>2]|0;l=c+16|0;d=k[l>>2]|0;g=ia(d,f)|0;k[n>>2]=0;o=a+12|0;k[o>>2]=0;k[a+16>>2]=0;do if(g){if(!((g|0)<0?(x=0,qa(178,n|0),f=x,x=0,f&1):0))m=4;if((m|0)==4?(h=g<<1,x=0,j=ta(67,h|0)|0,f=x,x=0,!(f&1)):0){k[n>>2]=j;f=j+(g<<1)|0;k[a+16>>2]=f;sw(j|0,0,h|0)|0;k[o>>2]=f;f=k[c>>2]|0;d=k[l>>2]|0;break}g=Wa()|0;e=k[n>>2]|0;d=e;if(e){f=k[o>>2]|0;if((f|0)!=(e|0))k[o>>2]=f+(~((f+-2-d|0)>>>1)<<1);mj(e)}o=g;fb(o|0)}while(0);g=a+20|0;d=ia(f<<1,d)|0;k[g>>2]=0;h=a+24|0;k[h>>2]=0;k[a+28>>2]=0;if(!d){o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))m=13;if((m|0)==13?(x=0,e=ta(67,d|0)|0,m=x,x=0,!(m&1)):0){k[h>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[h>>2]|0)+1|0;k[h>>2]=e;d=d+-1|0}while((d|0)!=0);o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}f=Wa()|0;e=k[g>>2]|0;if(e){if((k[h>>2]|0)!=(e|0))k[h>>2]=e;mj(e)}e=k[n>>2]|0;if(!e){o=f;fb(o|0)}d=k[o>>2]|0;if((d|0)!=(e|0))k[o>>2]=d+(~((d+-2-e|0)>>>1)<<1);mj(e);o=f;fb(o|0)}function Jc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;k[a>>2]=36436;k[a+4>>2]=c;n=a+8|0;f=k[c>>2]|0;l=c+16|0;d=k[l>>2]|0;g=ia(d,f)|0;k[n>>2]=0;o=a+12|0;k[o>>2]=0;k[a+16>>2]=0;do if(g){if(!((g|0)<0?(x=0,qa(178,n|0),f=x,x=0,f&1):0))m=4;if((m|0)==4?(h=g<<1,x=0,j=ta(67,h|0)|0,f=x,x=0,!(f&1)):0){k[n>>2]=j;f=j+(g<<1)|0;k[a+16>>2]=f;sw(j|0,0,h|0)|0;k[o>>2]=f;f=k[c>>2]|0;d=k[l>>2]|0;break}g=Wa()|0;e=k[n>>2]|0;d=e;if(e){f=k[o>>2]|0;if((f|0)!=(e|0))k[o>>2]=f+(~((f+-2-d|0)>>>1)<<1);mj(e)}o=g;fb(o|0)}while(0);g=a+20|0;d=ia(f<<1,d)|0;k[g>>2]=0;h=a+24|0;k[h>>2]=0;k[a+28>>2]=0;if(!d){o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))m=13;if((m|0)==13?(x=0,e=ta(67,d|0)|0,m=x,x=0,!(m&1)):0){k[h>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[h>>2]|0)+1|0;k[h>>2]=e;d=d+-1|0}while((d|0)!=0);o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}f=Wa()|0;e=k[g>>2]|0;if(e){if((k[h>>2]|0)!=(e|0))k[h>>2]=e;mj(e)}e=k[n>>2]|0;if(!e){o=f;fb(o|0)}d=k[o>>2]|0;if((d|0)!=(e|0))k[o>>2]=d+(~((d+-2-e|0)>>>1)<<1);mj(e);o=f;fb(o|0)}function Kc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;k[a>>2]=36412;k[a+4>>2]=c;n=a+8|0;f=k[c>>2]|0;l=c+16|0;d=k[l>>2]|0;g=ia(d,f)|0;k[n>>2]=0;o=a+12|0;k[o>>2]=0;k[a+16>>2]=0;do if(g){if(!((g|0)<0?(x=0,qa(178,n|0),f=x,x=0,f&1):0))m=4;if((m|0)==4?(h=g<<1,x=0,j=ta(67,h|0)|0,f=x,x=0,!(f&1)):0){k[n>>2]=j;f=j+(g<<1)|0;k[a+16>>2]=f;sw(j|0,0,h|0)|0;k[o>>2]=f;f=k[c>>2]|0;d=k[l>>2]|0;break}g=Wa()|0;e=k[n>>2]|0;d=e;if(e){f=k[o>>2]|0;if((f|0)!=(e|0))k[o>>2]=f+(~((f+-2-d|0)>>>1)<<1);mj(e)}o=g;fb(o|0)}while(0);g=a+20|0;d=ia(f<<1,d)|0;k[g>>2]=0;h=a+24|0;k[h>>2]=0;k[a+28>>2]=0;if(!d){o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))m=13;if((m|0)==13?(x=0,e=ta(67,d|0)|0,m=x,x=0,!(m&1)):0){k[h>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[h>>2]|0)+1|0;k[h>>2]=e;d=d+-1|0}while((d|0)!=0);o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}f=Wa()|0;e=k[g>>2]|0;if(e){if((k[h>>2]|0)!=(e|0))k[h>>2]=e;mj(e)}e=k[n>>2]|0;if(!e){o=f;fb(o|0)}d=k[o>>2]|0;if((d|0)!=(e|0))k[o>>2]=d+(~((d+-2-e|0)>>>1)<<1);mj(e);o=f;fb(o|0)}function Lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;k[a>>2]=36388;k[a+4>>2]=c;n=a+8|0;f=k[c>>2]|0;l=c+16|0;d=k[l>>2]|0;g=ia(d,f)|0;k[n>>2]=0;o=a+12|0;k[o>>2]=0;k[a+16>>2]=0;do if(g){if(!((g|0)<0?(x=0,qa(178,n|0),f=x,x=0,f&1):0))m=4;if((m|0)==4?(h=g<<1,x=0,j=ta(67,h|0)|0,f=x,x=0,!(f&1)):0){k[n>>2]=j;f=j+(g<<1)|0;k[a+16>>2]=f;sw(j|0,0,h|0)|0;k[o>>2]=f;f=k[c>>2]|0;d=k[l>>2]|0;break}g=Wa()|0;e=k[n>>2]|0;d=e;if(e){f=k[o>>2]|0;if((f|0)!=(e|0))k[o>>2]=f+(~((f+-2-d|0)>>>1)<<1);mj(e)}o=g;fb(o|0)}while(0);g=a+20|0;d=ia(f<<1,d)|0;k[g>>2]=0;h=a+24|0;k[h>>2]=0;k[a+28>>2]=0;if(!d){o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))m=13;if((m|0)==13?(x=0,e=ta(67,d|0)|0,m=x,x=0,!(m&1)):0){k[h>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[h>>2]|0)+1|0;k[h>>2]=e;d=d+-1|0}while((d|0)!=0);o=a+36|0;k[o>>2]=k[b>>2];k[o+4>>2]=k[b+4>>2];k[o+8>>2]=k[b+8>>2];return}f=Wa()|0;e=k[g>>2]|0;if(e){if((k[h>>2]|0)!=(e|0))k[h>>2]=e;mj(e)}e=k[n>>2]|0;if(!e){o=f;fb(o|0)}d=k[o>>2]|0;if((d|0)!=(e|0))k[o>>2]=d+(~((d+-2-e|0)>>>1)<<1);mj(e);o=f;fb(o|0)}function Mc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+32|0;Tm(g,b)|0;f=a+44|0;k[f>>2]=0;h=a+48|0;e=k[h>>2]|0;if(e&8){b=i[g>>0]|0;if(!(b&1)){b=((b&255)>>>1)+(g+1)|0;k[f>>2]=b;c=g+1|0;d=g+1|0}else{b=(k[a+40>>2]|0)+(k[a+36>>2]|0)|0;k[f>>2]=b;d=k[a+40>>2]|0;c=d}k[a+8>>2]=c;k[a+12>>2]=d;k[a+16>>2]=b}if(!(e&16))return;b=i[g>>0]|0;if(!(b&1)){e=(b&255)>>>1;k[f>>2]=g+1+e;b=10;f=e}else{e=k[a+36>>2]|0;k[f>>2]=(k[a+40>>2]|0)+e;b=(k[g>>2]&-2)+-1|0;f=e}Wm(g,b,0);b=i[g>>0]|0;if(!(b&1)){e=g+1|0;d=(b&255)>>>1;c=g+1|0}else{c=k[a+40>>2]|0;e=c;d=k[a+36>>2]|0}b=a+24|0;k[b>>2]=c;k[a+20>>2]=c;k[a+28>>2]=e+d;if(!(k[h>>2]&3))return;k[b>>2]=c+f;return}function Nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;g=o+16|0;n=o+8|0;h=o;x=0;ra(65,n|0,a|0);l=x;x=0;a:do if(l&1){c=Wa(0)|0;d=a;e=a}else{do if(i[n>>0]|0){d=k[(k[a>>2]|0)+-12>>2]|0;k[h>>2]=k[a+(d+24)>>2];j=a+d|0;l=k[a+(d+4)>>2]|0;e=b+c|0;d=a+(d+76)|0;c=k[d>>2]|0;do if((c|0)==-1){x=0;c=ta(68,j|0)|0;p=x;x=0;if(p&1)m=13;else{k[g>>2]=c;x=0;c=Aa(37,g|0,44220)|0;p=x;x=0;if(!(p&1)?(x=0,f=Aa(k[(k[c>>2]|0)+28>>2]|0,c|0,32)|0,p=x,x=0,!(p&1)):0){Qs(g);c=f<<24>>24;k[d>>2]=c;m=9;break}c=Wa(0)|0;Qs(g)}}else m=9;while(0);if((m|0)==9){x=0;k[g>>2]=k[h>>2];c=sa(39,g|0,b|0,((l&176|0)==32?e:b)|0,e|0,j|0,c&255|0)|0;p=x;x=0;if(!(p&1)){if(c)break;p=k[(k[a>>2]|0)+-12>>2]|0;x=0;ra(66,a+p|0,k[a+(p+16)>>2]|5|0);p=x;x=0;if(!(p&1))break;else m=13}else m=13}if((m|0)==13)c=Wa(0)|0;ro(n);d=a;e=a;break a}while(0);ro(n);r=o;return a|0}while(0);cb(c|0)|0;x=0;qa(181,d+(k[(k[e>>2]|0)+-12>>2]|0)|0);p=x;x=0;if(!(p&1)){eb();r=o;return a|0}c=Wa()|0;x=0;Ga(3);p=x;x=0;if(p&1){p=Wa(0)|0;oc(p)}else fb(c|0);return 0}function Oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[b+48>>2]|0;if(c&16){c=b+44|0;d=k[c>>2]|0;e=k[b+24>>2]|0;if(d>>>0>>0)k[c>>2]=e;else e=d;d=k[b+20>>2]|0;f=e-d|0;if(f>>>0>4294967279)ij(a);if(f>>>0<11){i[a>>0]=f<<1;c=a+1|0}else{b=f+16&-16;c=lj(b)|0;k[a+8>>2]=c;k[a>>2]=b|1;k[a+4>>2]=f}if((d|0)!=(e|0)){b=c;while(1){i[b>>0]=i[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else b=b+1|0}c=c+f|0}i[c>>0]=0;return}if(!(c&8)){k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}d=k[b+8>>2]|0;b=k[b+16>>2]|0;f=b-d|0;if(f>>>0>4294967279)ij(a);if(f>>>0<11){i[a>>0]=f<<1;c=a+1|0}else{e=f+16&-16;c=lj(e)|0;k[a+8>>2]=c;k[a>>2]=e|1;k[a+4>>2]=f}if((d|0)!=(b|0)){e=c;while(1){i[e>>0]=i[d>>0]|0;d=d+1|0;if((d|0)==(b|0))break;else e=e+1|0}c=c+f|0}i[c>>0]=0;return}function Pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;k[a>>2]=36364;k[a+4>>2]=c;o=a+8|0;g=k[c>>2]|0;m=c+16|0;f=k[m>>2]|0;l=ia(f,g)|0;k[o>>2]=0;p=a+12|0;k[p>>2]=0;k[a+16>>2]=0;do if(l){if(!((l|0)<0?(x=0,qa(178,o|0),g=x,x=0,g&1):0))n=4;if((n|0)==4?(h=l<<1,x=0,j=ta(67,h|0)|0,g=x,x=0,!(g&1)):0){k[o>>2]=j;g=j+(l<<1)|0;k[a+16>>2]=g;sw(j|0,0,h|0)|0;k[p>>2]=g;g=k[c>>2]|0;f=k[m>>2]|0;break}h=Wa()|0;e=k[o>>2]|0;f=e;if(e){g=k[p>>2]|0;if((g|0)!=(e|0))k[p>>2]=g+(~((g+-2-f|0)>>>1)<<1);mj(e)}p=h;fb(p|0)}while(0);h=a+20|0;f=ia(g<<1,f)|0;k[h>>2]=0;j=a+24|0;k[j>>2]=0;k[a+28>>2]=0;if(!f){p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}if(!((f|0)<0?(x=0,qa(178,h|0),m=x,x=0,m&1):0))n=13;if((n|0)==13?(x=0,e=ta(67,f|0)|0,n=x,x=0,!(n&1)):0){k[j>>2]=e;k[h>>2]=e;k[a+28>>2]=e+f;do{i[e>>0]=0;e=(k[j>>2]|0)+1|0;k[j>>2]=e;f=f+-1|0}while((f|0)!=0);p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}g=Wa()|0;e=k[h>>2]|0;if(e){if((k[j>>2]|0)!=(e|0))k[j>>2]=e;mj(e)}e=k[o>>2]|0;if(!e){p=g;fb(p|0)}f=k[p>>2]|0;if((f|0)!=(e|0))k[p>>2]=f+(~((f+-2-e|0)>>>1)<<1);mj(e);p=g;fb(p|0)}function Qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;k[a>>2]=36340;k[a+4>>2]=c;o=a+8|0;g=k[c>>2]|0;m=c+16|0;f=k[m>>2]|0;l=ia(f,g)|0;k[o>>2]=0;p=a+12|0;k[p>>2]=0;k[a+16>>2]=0;do if(l){if(!((l|0)<0?(x=0,qa(178,o|0),g=x,x=0,g&1):0))n=4;if((n|0)==4?(h=l<<1,x=0,j=ta(67,h|0)|0,g=x,x=0,!(g&1)):0){k[o>>2]=j;g=j+(l<<1)|0;k[a+16>>2]=g;sw(j|0,0,h|0)|0;k[p>>2]=g;g=k[c>>2]|0;f=k[m>>2]|0;break}h=Wa()|0;e=k[o>>2]|0;f=e;if(e){g=k[p>>2]|0;if((g|0)!=(e|0))k[p>>2]=g+(~((g+-2-f|0)>>>1)<<1);mj(e)}p=h;fb(p|0)}while(0);h=a+20|0;f=ia(g<<1,f)|0;k[h>>2]=0;j=a+24|0;k[j>>2]=0;k[a+28>>2]=0;if(!f){p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}if(!((f|0)<0?(x=0,qa(178,h|0),m=x,x=0,m&1):0))n=13;if((n|0)==13?(x=0,e=ta(67,f|0)|0,n=x,x=0,!(n&1)):0){k[j>>2]=e;k[h>>2]=e;k[a+28>>2]=e+f;do{i[e>>0]=0;e=(k[j>>2]|0)+1|0;k[j>>2]=e;f=f+-1|0}while((f|0)!=0);p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}g=Wa()|0;e=k[h>>2]|0;if(e){if((k[j>>2]|0)!=(e|0))k[j>>2]=e;mj(e)}e=k[o>>2]|0;if(!e){p=g;fb(p|0)}f=k[p>>2]|0;if((f|0)!=(e|0))k[p>>2]=f+(~((f+-2-e|0)>>>1)<<1);mj(e);p=g;fb(p|0)}function Rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;k[a>>2]=36316;k[a+4>>2]=c;o=a+8|0;g=k[c>>2]|0;m=c+16|0;f=k[m>>2]|0;l=ia(f,g)|0;k[o>>2]=0;p=a+12|0;k[p>>2]=0;k[a+16>>2]=0;do if(l){if(!((l|0)<0?(x=0,qa(178,o|0),g=x,x=0,g&1):0))n=4;if((n|0)==4?(h=l<<1,x=0,j=ta(67,h|0)|0,g=x,x=0,!(g&1)):0){k[o>>2]=j;g=j+(l<<1)|0;k[a+16>>2]=g;sw(j|0,0,h|0)|0;k[p>>2]=g;g=k[c>>2]|0;f=k[m>>2]|0;break}h=Wa()|0;e=k[o>>2]|0;f=e;if(e){g=k[p>>2]|0;if((g|0)!=(e|0))k[p>>2]=g+(~((g+-2-f|0)>>>1)<<1);mj(e)}p=h;fb(p|0)}while(0);h=a+20|0;f=ia(g<<1,f)|0;k[h>>2]=0;j=a+24|0;k[j>>2]=0;k[a+28>>2]=0;if(!f){p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}if(!((f|0)<0?(x=0,qa(178,h|0),m=x,x=0,m&1):0))n=13;if((n|0)==13?(x=0,e=ta(67,f|0)|0,n=x,x=0,!(n&1)):0){k[j>>2]=e;k[h>>2]=e;k[a+28>>2]=e+f;do{i[e>>0]=0;e=(k[j>>2]|0)+1|0;k[j>>2]=e;f=f+-1|0}while((f|0)!=0);p=a+32|0;o=d;o=k[o>>2]|0;d=d+4|0;d=k[d>>2]|0;n=p;k[n>>2]=o;p=p+4|0;k[p>>2]=d;p=a+40|0;k[p>>2]=o;p=a+48|0;k[p>>2]=k[b>>2];k[p+4>>2]=k[b+4>>2];k[p+8>>2]=k[b+8>>2];return}g=Wa()|0;e=k[h>>2]|0;if(e){if((k[j>>2]|0)!=(e|0))k[j>>2]=e;mj(e)}e=k[o>>2]|0;if(!e){p=g;fb(p|0)}f=k[p>>2]|0;if((f|0)!=(e|0))k[p>>2]=f+(~((f+-2-e|0)>>>1)<<1);mj(e);p=g;fb(p|0)}function Sc(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36316;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function Tc(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36316;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+48|0;if(!(k[e>>2]|0)){h=a+52|0;Zc(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;Zc(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+48>>2]|0;if(!e){e=a+52|0;Wc(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{Xc(a,e,b,c,d);return}}function Wc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0;l=a+4|0;f=k[l>>2]|0;do if(!(i[f+32>>0]|0))n=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*6|0)|0;f=k[l>>2]|0;h=k[f+16>>2]|0;if((d|0)<=0){n=k[g>>2]|0;break}b=k[g>>2]|0;f=b;g=0;while(1){n=f+4|0;o=j[f>>1]|0;j[f>>1]=j[n>>1]|0;j[n>>1]=o;g=g+1|0;if((g|0)==(d|0))break;else f=f+(h<<1)|0}n=b;f=k[l>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:if((k[f+24>>2]|0)==2){if((d|0)<=0)return;f=a+32|0;b=0;do{o=k[f>>2]|0;l=m[n+(b*6|0)+2>>1]<>1]<>1]<>1]=(l+49152+((a+e|0)>>>2)&65535)>>>o;j[c+(b*6|0)+2>>1]=a>>>o;j[c+(b*6|0)+4>>1]=e>>>o;b=b+1|0}while((b|0)!=(d|0));return}else{g=(e|0)<(d|0)?e:d;if((g|0)<=0)return;h=e<<1;f=k[a+32>>2]|0;b=0;do{d=m[n+(b*6|0)+2>>1]<>1]<>1]<>1]=(d+49152+((a+o|0)>>>2)&65535)>>>f;j[c+(b+e<<1)>>1]=a>>>f;j[c+(b+h<<1)>>1]=o>>>f;b=b+1|0}while((b|0)!=(g|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;g=(e|0)<(d|0)?e:d;if((g|0)<=0)return;h=e<<1;l=e*3|0;f=k[a+32>>2]|0;b=0;do{o=j[n+(b<<3)+6>>1]|0;p=m[n+(b<<3)+2>>1]<>1]<>1]<>1]=(p+49152+((d+a|0)>>>2)&65535)>>>f;j[c+(b+e<<1)>>1]=d>>>f;j[c+(b+h<<1)>>1]=a>>>f;j[c+(b+l<<1)>>1]=o;b=b+1|0}while((b|0)!=(g|0));return}default:return}}function Xc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;Wc(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;Wc(a,q,c,d,e);r=n;return}function Yc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=r;r=r+176|0;c=e+152|0;j=e+16|0;g=e;if(!(b&1)){c=(b|0)/4|0;if((b|0)>3){d=0;do{j=a+(d<<2)|0;h=k[j>>2]|0;k[j>>2]=h>>>8&16711935|h<<8&-16711936;d=d+1|0}while((d|0)<(c|0))}if(!(b&3)){r=e;return}g=a+(b+-2)|0;j=a+(b+-1)|0;h=i[g>>0]|0;i[g>>0]=i[j>>0]|0;i[j>>0]=h;r=e;return}h=j+56|0;f=j+4|0;k[j>>2]=36160;k[h>>2]=36180;x=0;ra(62,j+56|0,f|0);e=x;x=0;if(e&1){j=Wa()|0;qn(h);fb(j|0)}k[j+128>>2]=0;k[j+132>>2]=-1;k[j>>2]=36200;k[j+56>>2]=36220;x=0;qa(180,f|0);e=x;x=0;do if(e&1)c=Wa()|0;else{k[f>>2]=36236;e=j+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[j+52>>2]=16;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;x=0;ra(63,f|0,c|0);a=x;x=0;if(a&1){j=Wa()|0;Sm(c);Sm(e);xn(f);c=j;break}Sm(c);x=0;c=va(28,j|0,49087,24)|0;a=x;x=0;if((!(a&1)?(x=0,d=Aa(36,c|0,b|0)|0,b=x,x=0,!(b&1)):0)?(x=0,va(28,d|0,49112,20)|0,b=x,x=0,!(b&1)):0){a=Va(16)|0;x=0;ra(64,g|0,f|0);b=x;x=0;if(!(b&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,a|0,1,35648,g|0);b=x;x=0;if(b&1)d=1;else{x=0;Fa(6,a|0,824,96);x=0;d=0}c=Wa()|0;Sm(g);if(!d){g=c;k[j>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}}else c=Wa()|0;Ua(a|0);g=c;k[j>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}g=Wa()|0;k[j>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}while(0);j=c;qn(h);fb(j|0)}function Zc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=a+4|0;f=k[n>>2]|0;a:do switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)<=0)break a;f=a+40|0;a=0;do{e=k[f>>2]|0;h=m[b+(a*6|0)+2>>1]<>1]<>1]<>2)+16384|0;j[c+(a*6|0)>>1]=(g+32768+l&65535)>>>e;j[c+(a*6|0)+2>>1]=(l&65535)>>>e;j[c+(a*6|0)+4>>1]=(h+32768+l&65535)>>>e;a=a+1|0}while((a|0)!=(d|0))}else{g=(d|0)<(e|0)?d:e;if((g|0)<=0)break a;h=e<<1;f=a+40|0;a=0;do{l=k[f>>2]|0;p=m[b+(a+e<<1)>>1]<>1]<>1]<>2)+16384|0;j[c+(a*6|0)>>1]=(q+32768+o&65535)>>>l;j[c+(a*6|0)+2>>1]=(o&65535)>>>l;j[c+(a*6|0)+4>>1]=(p+32768+o&65535)>>>l;a=a+1|0}while((a|0)!=(g|0))}break}case 4:{if((k[f+24>>2]|0)==1?(l=(d|0)<(e|0)?d:e,(l|0)>0):0){h=e<<1;f=a+40|0;a=e*3|0;g=0;do{q=k[f>>2]|0;p=m[b+(g+e<<1)>>1]<>1]<>1]<>2)+16384|0;r=j[b+(g+a<<1)>>1]|0;t=ww((o&65535)>>>q&65535|0,0,16)|0;p=(p+32768+o&65535)>>>q|M;r=ww(r&65535|0,0,48)|0;r=t|(s+32768+o&65535)>>>q&65535|r;p=p&65535|M;q=c+(g<<3)|0;o=q;j[o>>1]=r;j[o+2>>1]=r>>>16;q=q+4|0;j[q>>1]=p;j[q+2>>1]=p>>>16;g=g+1|0}while((g|0)!=(l|0))}break}default:{}}while(0);f=k[n>>2]|0;if(!(i[f+32>>0]|0))return;g=k[f+16>>2]|0;if((d|0)<=0)return;f=c;a=0;while(1){t=f+4|0;s=j[f>>1]|0;j[f>>1]=j[t>>1]|0;j[t>>1]=s;a=a+1|0;if((a|0)==(d|0))break;else f=f+(g<<1)|0}return}function _c(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36340;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function $c(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36340;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+48|0;if(!(k[e>>2]|0)){h=a+52|0;ed(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;ed(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+48>>2]|0;if(!e){e=a+52|0;cd(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{dd(a,e,b,c,d);return}}function cd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0;l=a+4|0;f=k[l>>2]|0;do if(!(i[f+32>>0]|0))n=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*6|0)|0;f=k[l>>2]|0;h=k[f+16>>2]|0;if((d|0)<=0){n=k[g>>2]|0;break}b=k[g>>2]|0;f=b;g=0;while(1){n=f+4|0;o=j[f>>1]|0;j[f>>1]=j[n>>1]|0;j[n>>1]=o;g=g+1|0;if((g|0)==(d|0))break;else f=f+(h<<1)|0}n=b;f=k[l>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:if((k[f+24>>2]|0)==2){if((d|0)<=0)return;f=a+32|0;b=0;do{e=k[f>>2]|0;l=m[n+(b*6|0)>>1]<>1]<>1]<>>1)&65535)>>>e&65535;j[c+(b*6|0)>>1]=(l+32768-a&65535)>>>e;j[c+(b*6|0)+2>>1]=(a&65535)>>>e;j[c+(b*6|0)+4>>1]=o;b=b+1|0}while((b|0)!=(d|0));return}else{g=(e|0)<(d|0)?e:d;if((g|0)<=0)return;h=e<<1;f=k[a+32>>2]|0;b=0;do{d=m[n+(b*6|0)>>1]<>1]<>1]<>>1)&65535)>>>f&65535;j[c+(b<<1)>>1]=(d+32768-a&65535)>>>f;j[c+(b+e<<1)>>1]=(a&65535)>>>f;j[c+(b+h<<1)>>1]=o;b=b+1|0}while((b|0)!=(g|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;g=(e|0)<(d|0)?e:d;if((g|0)<=0)return;h=e<<1;l=e*3|0;f=k[a+32>>2]|0;b=0;do{o=j[n+(b<<3)+6>>1]|0;p=m[n+(b<<3)>>1]<>1]<>1]<>>1)&65535)>>>f&65535;j[c+(b<<1)>>1]=(p+32768-d&65535)>>>f;j[c+(b+e<<1)>>1]=(d&65535)>>>f;j[c+(b+h<<1)>>1]=a;j[c+(b+l<<1)>>1]=o;b=b+1|0}while((b|0)!=(g|0));return}default:return}}function dd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;cd(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;cd(a,q,c,d,e);r=n;return}function ed(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;n=a+4|0;f=k[n>>2]|0;a:do switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)<=0)break a;f=a+40|0;a=0;do{l=k[f>>2]|0;h=m[b+(a*6|0)+2>>1]<>1]<>1]<>>1)&65535)>>>l&65535;j[c+(a*6|0)>>1]=g>>>l;j[c+(a*6|0)+2>>1]=h>>>l;j[c+(a*6|0)+4>>1]=e;a=a+1|0}while((a|0)!=(d|0))}else{g=(d|0)<(e|0)?d:e;if((g|0)<=0)break a;h=e<<1;f=a+40|0;a=0;do{o=k[f>>2]|0;p=m[b+(a+e<<1)>>1]<>1]<>1]<>>1)&65535)>>>o&65535;j[c+(a*6|0)>>1]=q>>>o;j[c+(a*6|0)+2>>1]=p>>>o;j[c+(a*6|0)+4>>1]=l;a=a+1|0}while((a|0)!=(g|0))}break}case 4:{if((k[f+24>>2]|0)==1?(l=(d|0)<(e|0)?d:e,(l|0)>0):0){h=e<<1;f=a+40|0;a=e*3|0;g=0;do{o=k[f>>2]|0;q=m[b+(g+e<<1)>>1]<>1]<>1]<>>1)&65535)>>>o;r=j[b+(g+a<<1)>>1]|0;q=ww(q>>>o&65535|0,0,16)|0;p=M|p;r=ww(r&65535|0,0,48)|0;r=s>>>o&65535|q|r;p=p&65535|M;q=c+(g<<3)|0;o=q;j[o>>1]=r;j[o+2>>1]=r>>>16;q=q+4|0;j[q>>1]=p;j[q+2>>1]=p>>>16;g=g+1|0}while((g|0)!=(l|0))}break}default:{}}while(0);f=k[n>>2]|0;if(!(i[f+32>>0]|0))return;g=k[f+16>>2]|0;if((d|0)<=0)return;f=c;a=0;while(1){s=f+4|0;r=j[f>>1]|0;j[f>>1]=j[s>>1]|0;j[s>>1]=r;a=a+1|0;if((a|0)==(d|0))break;else f=f+(g<<1)|0}return}function fd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36364;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function gd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36364;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+48|0;if(!(k[e>>2]|0)){h=a+52|0;ld(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;ld(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+48>>2]|0;if(!e){e=a+52|0;jd(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{kd(a,e,b,c,d);return}}function jd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0;l=a+4|0;f=k[l>>2]|0;do if(!(i[f+32>>0]|0))n=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*6|0)|0;f=k[l>>2]|0;h=k[f+16>>2]|0;if((d|0)<=0){n=k[g>>2]|0;break}b=k[g>>2]|0;f=b;g=0;while(1){n=f+4|0;o=j[f>>1]|0;j[f>>1]=j[n>>1]|0;j[n>>1]=o;g=g+1|0;if((g|0)==(d|0))break;else f=f+(h<<1)|0}n=b;f=k[l>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:if((k[f+24>>2]|0)==2){if((d|0)<=0)return;f=a+32|0;b=0;do{e=k[f>>2]|0;a=m[n+(b*6|0)+2>>1]<>1]<>>e&65535;j[c+(b*6|0)>>1]=((m[n+(b*6|0)>>1]<>>e;j[c+(b*6|0)+2>>1]=(a&65535)>>>e;j[c+(b*6|0)+4>>1]=o;b=b+1|0}while((b|0)!=(d|0));return}else{g=(e|0)<(d|0)?e:d;if((g|0)<=0)return;h=e<<1;f=k[a+32>>2]|0;b=0;do{a=m[n+(b*6|0)+2>>1]<>1]<>>f&65535;j[c+(b<<1)>>1]=((m[n+(b*6|0)>>1]<>>f;j[c+(b+e<<1)>>1]=(a&65535)>>>f;j[c+(b+h<<1)>>1]=o;b=b+1|0}while((b|0)!=(g|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;h=(e|0)<(d|0)?e:d;if((h|0)<=0)return;l=e<<1;g=e*3|0;f=k[a+32>>2]|0;b=0;do{o=j[n+(b<<3)+6>>1]|0;d=m[n+(b<<3)+2>>1]<>1]<>>f&65535;j[c+(b<<1)>>1]=((m[n+(b<<3)>>1]<>>f;j[c+(b+e<<1)>>1]=(d&65535)>>>f;j[c+(b+l<<1)>>1]=a;j[c+(b+g<<1)>>1]=o;b=b+1|0}while((b|0)!=(h|0));return}default:return}}function kd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;jd(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;jd(a,q,c,d,e);r=n;return}function ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;n=a+4|0;f=k[n>>2]|0;a:do switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)<=0)break a;f=a+40|0;a=0;do{l=k[f>>2]|0;h=m[b+(a*6|0)+2>>1]<>1]<>>l&65535;j[c+(a*6|0)>>1]=((m[b+(a*6|0)>>1]<>>l;j[c+(a*6|0)+2>>1]=(h&65535)>>>l;j[c+(a*6|0)+4>>1]=e;a=a+1|0}while((a|0)!=(d|0))}else{g=(d|0)<(e|0)?d:e;if((g|0)<=0)break a;h=e<<1;f=a+40|0;a=0;do{o=k[f>>2]|0;p=m[b+(a+e<<1)>>1]<>1]<>>o&65535;j[c+(a*6|0)>>1]=((m[b+(a<<1)>>1]<>>o;j[c+(a*6|0)+2>>1]=(p&65535)>>>o;j[c+(a*6|0)+4>>1]=l;a=a+1|0}while((a|0)!=(g|0))}break}case 4:{if((k[f+24>>2]|0)==1?(l=(d|0)<(e|0)?d:e,(l|0)>0):0){h=e<<1;f=a+40|0;a=e*3|0;g=0;do{q=k[f>>2]|0;s=m[b+(g+e<<1)>>1]<>1]<>>q;o=(s+32768+(m[b+(g+h<<1)>>1]<>>q;r=j[b+(g+a<<1)>>1]|0;q=ww((s&65535)>>>q&65535|0,0,16)|0;o=o|M;r=ww(r&65535|0,0,48)|0;r=q|p&65535|r;o=o&65535|M;p=c+(g<<3)|0;q=p;j[q>>1]=r;j[q+2>>1]=r>>>16;p=p+4|0;j[p>>1]=o;j[p+2>>1]=o>>>16;g=g+1|0}while((g|0)!=(l|0))}break}default:{}}while(0);f=k[n>>2]|0;if(!(i[f+32>>0]|0))return;g=k[f+16>>2]|0;if((d|0)<=0)return;f=c;a=0;while(1){s=f+4|0;r=j[f>>1]|0;j[f>>1]=j[s>>1]|0;j[s>>1]=r;a=a+1|0;if((a|0)==(d|0))break;else f=f+(g<<1)|0}return}function md(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+16|0;l=n;m=k[a>>2]|0;if(!m){a=0;r=n;return a|0}o=b;h=d-o|0;j=e+12|0;g=k[j>>2]|0;h=(g|0)>(h|0)?g-h|0:0;g=c;e=g-o|0;if((e|0)>0?(Qb[k[(k[m>>2]|0)+48>>2]&63](m,b,e)|0)!=(e|0):0){k[a>>2]=0;o=0;r=n;return o|0}do if((h|0)>0){Rm(l,h,f);x=0;e=va(k[(k[m>>2]|0)+48>>2]|0,m|0,((i[l>>0]&1)==0?l+1|0:k[l+8>>2]|0)|0,h|0)|0;o=x;x=0;if(o&1){o=Wa()|0;Sm(l);fb(o|0)}if((e|0)==(h|0)){Sm(l);break}k[a>>2]=0;Sm(l);o=0;r=n;return o|0}while(0);d=d-g|0;if((d|0)>0?(Qb[k[(k[m>>2]|0)+48>>2]&63](m,c,d)|0)!=(d|0):0){k[a>>2]=0;o=0;r=n;return o|0}k[j>>2]=0;o=m;r=n;return o|0}function nd(a){a=a|0;k[a>>2]=36236;Sm(a+32|0);xn(a);return}function od(a){a=a|0;k[a>>2]=36236;Sm(a+32|0);xn(a);mj(a);return}function pd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0;g=b+44|0;h=k[g>>2]|0;l=b+24|0;m=k[l>>2]|0;if(h>>>0>>0){k[g>>2]=m;h=m}j=h;g=f&24;if(!g){b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}if((e|0)==1&(g|0)==24){b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}a:do switch(e|0){case 0:{g=0;e=0;break}case 1:if(!(f&8)){e=m-(k[b+20>>2]|0)|0;g=e;e=((e|0)<0)<<31>>31;break a}else{e=(k[b+12>>2]|0)-(k[b+8>>2]|0)|0;g=e;e=((e|0)<0)<<31>>31;break a}case 2:{g=b+32|0;if(!(i[g>>0]&1))g=g+1|0;else g=k[b+40>>2]|0;e=h-g|0;g=e;e=((e|0)<0)<<31>>31;break}default:{b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}}while(0);e=tw(g|0,e|0,c|0,d|0)|0;c=M;if((c|0)>=0){g=b+32|0;if(!(i[g>>0]&1))g=g+1|0;else g=k[b+40>>2]|0;d=h-g|0;h=((d|0)<0)<<31>>31;if(!((h|0)<(c|0)|(h|0)==(c|0)&d>>>0>>0)){g=f&8;if(!((e|0)==0&(c|0)==0)){if((g|0)!=0?(k[b+12>>2]|0)==0:0){b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}if((f&16|0)!=0&(m|0)==0){b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}}if(g){k[b+12>>2]=(k[b+8>>2]|0)+e;k[b+16>>2]=j}if(f&16)k[l>>2]=(k[b+20>>2]|0)+e;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=e;k[b+4>>2]=c;return}}b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}function qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=c+8|0;Sb[k[(k[b>>2]|0)+16>>2]&15](a,b,k[c>>2]|0,k[c+4>>2]|0,0,d);return}function rd(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+44|0;c=k[b>>2]|0;d=k[a+24>>2]|0;if(c>>>0>>0){k[b>>2]=d;c=d}if(!(k[a+48>>2]&8)){a=-1;return a|0}e=a+16|0;b=k[e>>2]|0;d=a+12|0;if(b>>>0>>0){d=k[d>>2]|0;k[e>>2]=c;b=c}else d=k[d>>2]|0;if(d>>>0>=b>>>0){a=-1;return a|0}a=l[d>>0]|0;return a|0}function sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=a+44|0;c=k[d>>2]|0;e=k[a+24>>2]|0;if(c>>>0>>0){k[d>>2]=e;c=e}h=a+8|0;d=k[h>>2]|0;j=a+12|0;f=k[j>>2]|0;g=d;if(d>>>0>=f>>>0){a=-1;return a|0}if((b|0)==-1){k[h>>2]=d;k[j>>2]=f+-1;k[a+16>>2]=c;a=0;return a|0}if(!(k[a+48>>2]&16)){e=b&255;d=f+-1|0;if(e<<24>>24!=(i[d>>0]|0)){a=-1;return a|0}}else{e=b&255;d=f+-1|0}k[h>>2]=g;k[j>>2]=d;k[a+16>>2]=c;i[d>>0]=e;a=b;return a|0}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;s=r;r=r+16|0;m=s;if((b|0)==-1){a=0;r=s;return a|0}n=a+12|0;o=a+8|0;p=(k[n>>2]|0)-(k[o>>2]|0)|0;q=a+24|0;c=k[q>>2]|0;l=a+28|0;d=k[l>>2]|0;do if((c|0)==(d|0)){h=a+48|0;if(!(k[h>>2]&16)){a=-1;r=s;return a|0}j=a+20|0;g=k[j>>2]|0;e=c-g|0;f=a+44|0;g=(k[f>>2]|0)-g|0;d=a+32|0;x=0;ra(67,d|0,0);c=x;x=0;if(!(c&1)){if(!(i[d>>0]&1))c=10;else c=(k[d>>2]&-2)+-1|0;x=0;Fa(8,d|0,c|0,0);c=x;x=0;if(!(c&1)){c=i[d>>0]|0;if(!(c&1)){d=d+1|0;c=(c&255)>>>1}else{d=k[a+40>>2]|0;c=k[a+36>>2]|0}t=d+c|0;k[j>>2]=d;k[l>>2]=t;j=d+e|0;k[q>>2]=j;c=d+g|0;k[f>>2]=c;d=t;break}}t=Wa(0)|0;cb(t|0)|0;eb();t=-1;r=s;return t|0}else{t=a+44|0;h=a+48|0;f=t;j=c;c=k[t>>2]|0}while(0);g=j+1|0;k[m>>2]=g;e=k[(g>>>0>>0?f:m)>>2]|0;k[f>>2]=e;if(k[h>>2]&8){c=a+32|0;if(!(i[c>>0]&1))c=c+1|0;else c=k[a+40>>2]|0;k[o>>2]=c;k[n>>2]=c+p;k[a+16>>2]=e}if((j|0)==(d|0)){t=Vb[k[(k[a>>2]|0)+52>>2]&63](a,b&255)|0;r=s;return t|0}else{k[q>>2]=g;i[j>>0]=b;t=b&255;r=s;return t|0}return 0}function ud(a){a=a|0;var b=0,c=0;k[a>>2]=36200;b=a+56|0;k[b>>2]=36220;c=a+4|0;k[c>>2]=36236;Sm(a+36|0);xn(c);qn(b);return}function vd(a){a=a|0;var b=0,c=0;k[a>>2]=36200;b=a+56|0;k[b>>2]=36220;c=a+4|0;k[c>>2]=36236;Sm(a+36|0);xn(c);qn(b);mj(a);return}function wd(a){a=a|0;var b=0,c=0,d=0,e=0;e=k[(k[a>>2]|0)+-12>>2]|0;b=a+e|0;k[b>>2]=36200;c=a+(e+56)|0;k[c>>2]=36220;d=a+(e+4)|0;k[d>>2]=36236;Sm(a+(e+36)|0);xn(d);qn(c);mj(b);return}function xd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36388;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function yd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36388;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function zd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+36|0;if(!(k[e>>2]|0)){h=a+40|0;Dd(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;Dd(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function Ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;Bd(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{Cd(a,e,b,c,d);return}}function Bd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0;h=a+4|0;f=k[h>>2]|0;do if(!(i[f+32>>0]|0))l=b;else{a=a+8|0;vw(k[a>>2]|0,b|0,d*6|0)|0;f=k[h>>2]|0;g=k[f+16>>2]|0;if((d|0)<=0){l=k[a>>2]|0;break}a=k[a>>2]|0;f=a;b=0;while(1){l=f+4|0;n=j[f>>1]|0;j[f>>1]=j[l>>1]|0;j[l>>1]=n;b=b+1|0;if((b|0)==(d|0))break;else f=f+(g<<1)|0}l=a;f=k[h>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{h=m[l+(f*6|0)+2>>1]|0;e=32768-h+(m[l+(f*6|0)+4>>1]|0)|0;n=(m[l+(f*6|0)>>1]|0)-h+32768|0;j[c+(f*6|0)>>1]=h+49152+(((e&65535)+(n&65535)|0)>>>2);j[c+(f*6|0)+2>>1]=e;j[c+(f*6|0)+4>>1]=n;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{h=m[l+(b*6|0)+2>>1]|0;d=32768-h+(m[l+(b*6|0)+4>>1]|0)|0;n=(m[l+(b*6|0)>>1]|0)-h+32768|0;j[c+(b<<1)>>1]=h+49152+(((d&65535)+(n&65535)|0)>>>2);j[c+(b+e<<1)>>1]=d;j[c+(b+a<<1)>>1]=n;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{n=j[l+(g<<3)+6>>1]|0;o=m[l+(g<<3)+2>>1]|0;h=32768-o+(m[l+(g<<3)+4>>1]|0)|0;d=(m[l+(g<<3)>>1]|0)-o+32768|0;j[c+(g<<1)>>1]=o+49152+(((h&65535)+(d&65535)|0)>>>2);j[c+(g+e<<1)>>1]=h;j[c+(g+a<<1)>>1]=d;j[c+(g+b<<1)>>1]=n;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function Cd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;Bd(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;Bd(a,q,c,d,e);r=n;return}function Dd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0;l=a+4|0;a=k[l>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){h=m[b+(a*6|0)+2>>1]|0;g=m[b+(a*6|0)+4>>1]|0;e=(m[b+(a*6|0)>>1]|0)-((g+h|0)>>>2)+16384|0;j[c+(a*6|0)>>1]=g+32768+e;j[c+(a*6|0)+2>>1]=e;j[c+(a*6|0)+4>>1]=h+32768+e;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=m[b+(g+e<<1)>>1]|0;o=m[b+(g+f<<1)>>1]|0;h=(m[b+(g<<1)>>1]|0)-((o+n|0)>>>2)+16384|0;j[c+(g*6|0)>>1]=o+32768+h;j[c+(g*6|0)+2>>1]=h;j[c+(g*6|0)+4>>1]=n+32768+h;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{n=m[b+(g+e<<1)>>1]|0;p=m[b+(g+a<<1)>>1]|0;o=(m[b+(g<<1)>>1]|0)-((p+n|0)>>>2)+16384|0;q=j[b+(g+f<<1)>>1]|0;r=ww(o&65535|0,0,16)|0;n=n+32768+o|M;q=ww(q&65535|0,0,48)|0;q=r|p+32768+o&65535|q;n=n&65535|M;o=c+(g<<3)|0;p=o;j[p>>1]=q;j[p+2>>1]=q>>>16;o=o+4|0;j[o>>1]=n;j[o+2>>1]=n>>>16;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[l>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)<=0)return;a=c;f=0;while(1){r=a+4|0;q=j[a>>1]|0;j[a>>1]=j[r>>1]|0;j[r>>1]=q;f=f+1|0;if((f|0)==(d|0))break;else a=a+(g<<1)|0}return}function Ed(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36412;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function Fd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36412;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function Gd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+36|0;if(!(k[e>>2]|0)){h=a+40|0;Kd(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;Kd(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function Hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;Id(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{Jd(a,e,b,c,d);return}}function Id(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0;h=a+4|0;f=k[h>>2]|0;do if(!(i[f+32>>0]|0))l=b;else{a=a+8|0;vw(k[a>>2]|0,b|0,d*6|0)|0;f=k[h>>2]|0;g=k[f+16>>2]|0;if((d|0)<=0){l=k[a>>2]|0;break}a=k[a>>2]|0;f=a;b=0;while(1){l=f+4|0;n=j[f>>1]|0;j[f>>1]=j[l>>1]|0;j[l>>1]=n;b=b+1|0;if((b|0)==(d|0))break;else f=f+(g<<1)|0}l=a;f=k[h>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{g=m[l+(f*6|0)>>1]|0;e=j[l+(f*6|0)+2>>1]|0;h=e&65535;n=(m[l+(f*6|0)+4>>1]|0)+32768-((h+g|0)>>>1)&65535;j[c+(f*6|0)>>1]=g+32768-h;j[c+(f*6|0)+2>>1]=e;j[c+(f*6|0)+4>>1]=n;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{d=j[l+(b*6|0)+2>>1]|0;g=m[l+(b*6|0)>>1]|0;h=d&65535;n=(m[l+(b*6|0)+4>>1]|0)+32768-((h+g|0)>>>1)&65535;j[c+(b<<1)>>1]=g+32768-h;j[c+(b+e<<1)>>1]=d;j[c+(b+a<<1)>>1]=n;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{h=j[l+(g<<3)+2>>1]|0;n=j[l+(g<<3)+6>>1]|0;p=m[l+(g<<3)>>1]|0;o=h&65535;d=(m[l+(g<<3)+4>>1]|0)+32768-((o+p|0)>>>1)&65535;j[c+(g<<1)>>1]=p+32768-o;j[c+(g+e<<1)>>1]=h;j[c+(g+a<<1)>>1]=d;j[c+(g+b<<1)>>1]=n;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function Jd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;Id(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;Id(a,q,c,d,e);r=n;return}function Kd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0;l=a+4|0;a=k[l>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){h=j[b+(a*6|0)+2>>1]|0;e=h&65535;g=(m[b+(a*6|0)>>1]|0)+32768+e|0;e=(m[b+(a*6|0)+4>>1]|0)+32768+(((g&65535)+e|0)>>>1)&65535;j[c+(a*6|0)>>1]=g;j[c+(a*6|0)+2>>1]=h;j[c+(a*6|0)+4>>1]=e;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=j[b+(g+e<<1)>>1]|0;h=n&65535;o=(m[b+(g<<1)>>1]|0)+32768+h|0;h=(m[b+(g+f<<1)>>1]|0)+32768+(((o&65535)+h|0)>>>1)&65535;j[c+(g*6|0)>>1]=o;j[c+(g*6|0)+2>>1]=n;j[c+(g*6|0)+4>>1]=h;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{o=j[b+(g+e<<1)>>1]|0;n=o&65535;p=(m[b+(g<<1)>>1]|0)+32768+n&65535;n=(m[b+(g+a<<1)>>1]|0)+32768+((p+n|0)>>>1)|0;q=j[b+(g+f<<1)>>1]|0;o=ww(o&65535|0,0,16)|0;n=M|n;q=ww(q&65535|0,0,48)|0;q=p|o|q;n=n&65535|M;o=c+(g<<3)|0;p=o;j[p>>1]=q;j[p+2>>1]=q>>>16;o=o+4|0;j[o>>1]=n;j[o+2>>1]=n>>>16;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[l>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)<=0)return;a=c;f=0;while(1){q=a+4|0;p=j[a>>1]|0;j[a>>1]=j[q>>1]|0;j[q>>1]=p;f=f+1|0;if((f|0)==(d|0))break;else a=a+(g<<1)|0}return}function Ld(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36436;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function Md(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36436;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function Nd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+36|0;if(!(k[e>>2]|0)){h=a+40|0;Rd(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;Rd(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function Od(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;Pd(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{Qd(a,e,b,c,d);return}}function Pd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0;h=a+4|0;f=k[h>>2]|0;do if(!(i[f+32>>0]|0))l=b;else{a=a+8|0;vw(k[a>>2]|0,b|0,d*6|0)|0;f=k[h>>2]|0;g=k[f+16>>2]|0;if((d|0)<=0){l=k[a>>2]|0;break}a=k[a>>2]|0;f=a;b=0;while(1){l=f+4|0;n=j[f>>1]|0;j[f>>1]=j[l>>1]|0;j[l>>1]=n;b=b+1|0;if((b|0)==(d|0))break;else f=f+(g<<1)|0}l=a;f=k[h>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{e=j[l+(f*6|0)+2>>1]|0;h=e&65535;n=32768-h+(m[l+(f*6|0)+4>>1]|0)&65535;j[c+(f*6|0)>>1]=(m[l+(f*6|0)>>1]|0)+32768-h;j[c+(f*6|0)+2>>1]=e;j[c+(f*6|0)+4>>1]=n;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{d=j[l+(b*6|0)+2>>1]|0;h=d&65535;n=32768-h+(m[l+(b*6|0)+4>>1]|0)&65535;j[c+(b<<1)>>1]=(m[l+(b*6|0)>>1]|0)+32768-h;j[c+(b+e<<1)>>1]=d;j[c+(b+a<<1)>>1]=n;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{h=j[l+(g<<3)+2>>1]|0;n=j[l+(g<<3)+6>>1]|0;o=h&65535;d=32768-o+(m[l+(g<<3)+4>>1]|0)&65535;j[c+(g<<1)>>1]=(m[l+(g<<3)>>1]|0)+32768-o;j[c+(g+e<<1)>>1]=h;j[c+(g+a<<1)>>1]=d;j[c+(g+b<<1)>>1]=n;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function Qd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;Pd(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;Pd(a,q,c,d,e);r=n;return}function Rd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0;l=a+4|0;a=k[l>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){h=j[b+(a*6|0)+2>>1]|0;g=h&65535;e=g+32768+(m[b+(a*6|0)+4>>1]|0)&65535;j[c+(a*6|0)>>1]=(m[b+(a*6|0)>>1]|0)+32768+g;j[c+(a*6|0)+2>>1]=h;j[c+(a*6|0)+4>>1]=e;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=j[b+(g+e<<1)>>1]|0;o=n&65535;h=o+32768+(m[b+(g+f<<1)>>1]|0)&65535;j[c+(g*6|0)>>1]=(m[b+(g<<1)>>1]|0)+32768+o;j[c+(g*6|0)+2>>1]=n;j[c+(g*6|0)+4>>1]=h;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{o=j[b+(g+e<<1)>>1]|0;n=o&65535;p=(m[b+(g<<1)>>1]|0)+32768+n|0;n=n+32768+(m[b+(g+a<<1)>>1]|0)|0;q=j[b+(g+f<<1)>>1]|0;o=ww(o&65535|0,0,16)|0;n=M|n;q=ww(q&65535|0,0,48)|0;q=p&65535|o|q;n=n&65535|M;o=c+(g<<3)|0;p=o;j[p>>1]=q;j[p+2>>1]=q>>>16;o=o+4|0;j[o>>1]=n;j[o+2>>1]=n>>>16;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[l>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)<=0)return;a=c;f=0;while(1){q=a+4|0;p=j[a>>1]|0;j[a>>1]=j[q>>1]|0;j[q>>1]=p;f=f+1|0;if((f|0)==(d|0))break;else a=a+(g<<1)|0}return}function Sd(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36460;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d)return;b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);return}function Td(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=36460;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}d=k[a+8>>2]|0;if(!d){mj(a);return}b=a+12|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-2-d|0)>>>1)<<1);mj(d);mj(a);return}function Ud(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=a+36|0;if(!(k[e>>2]|0)){h=a+40|0;Yd(a,b,k[h>>2]|0,c,d);k[h>>2]=(k[h>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}j=a+4|0;f=c<<1;g=ia(f,k[(k[j>>2]|0)+16>>2]|0)|0;h=a+20|0;Yd(a,b,k[h>>2]|0,c,d);b=k[j>>2]|0;if((k[b+28>>2]|0)==536870912)Yc(k[h>>2]|0,ia(f,k[b+16>>2]|0)|0);j=k[e>>2]|0;if((Qb[k[(k[j>>2]|0)+48>>2]&63](j,k[h>>2]|0,g)|0)==(g|0))return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,3,35648);j=x;x=0;if(j&1){j=Wa()|0;Ua(b|0);fb(j|0)}else ub(b|0,824,96)}function Vd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;Wd(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{Xd(a,e,b,c,d);return}}function Wd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0;h=a+4|0;f=k[h>>2]|0;do if(!(i[f+32>>0]|0))l=b;else{a=a+8|0;vw(k[a>>2]|0,b|0,d*6|0)|0;f=k[h>>2]|0;g=k[f+16>>2]|0;if((d|0)<=0){l=k[a>>2]|0;break}a=k[a>>2]|0;f=a;b=0;while(1){l=f+4|0;m=j[f>>1]|0;j[f>>1]=j[l>>1]|0;j[l>>1]=m;b=b+1|0;if((b|0)==(d|0))break;else f=f+(g<<1)|0}l=a;f=k[h>>2]|0}while(0);switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{e=j[l+(f*6|0)+2>>1]|0;m=j[l+(f*6|0)+4>>1]|0;j[c+(f*6|0)>>1]=j[l+(f*6|0)>>1]|0;j[c+(f*6|0)+2>>1]=e;j[c+(f*6|0)+4>>1]=m;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{d=j[l+(b*6|0)+2>>1]|0;m=j[l+(b*6|0)+4>>1]|0;j[c+(b<<1)>>1]=j[l+(b*6|0)>>1]|0;j[c+(b+e<<1)>>1]=d;j[c+(b+a<<1)>>1]=m;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{h=j[l+(g<<3)+2>>1]|0;d=j[l+(g<<3)+4>>1]|0;m=j[l+(g<<3)+6>>1]|0;j[c+(g<<1)>>1]=j[l+(g<<3)>>1]|0;j[c+(g+e<<1)>>1]=h;j[c+(g+a<<1)>>1]=d;j[c+(g+b<<1)>>1]=m;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function Xd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=r;r=r+176|0;o=n+152|0;q=n+16|0;p=n;j=a+4|0;f=k[j>>2]|0;m=d<<1;g=ia(m,k[f+16>>2]|0)|0;do if(g){h=a+20|0;while(1){f=Qb[k[(k[b>>2]|0)+32>>2]&63](b,k[h>>2]|0,g)|0;if(!f)break;if((g|0)==(f|0)){l=26;break}else g=g-f|0}if((l|0)==26){f=k[j>>2]|0;break}l=q+56|0;j=q+4|0;k[q>>2]=36160;k[l>>2]=36180;x=0;ra(62,q+56|0,j|0);n=x;x=0;if(n&1){q=Wa()|0;qn(l);fb(q|0)}k[q+128>>2]=0;k[q+132>>2]=-1;k[q>>2]=36200;k[q+56>>2]=36220;x=0;qa(180,j|0);n=x;x=0;do if(n&1)f=Wa()|0;else{k[j>>2]=36236;b=q+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[q+52>>2]=16;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;x=0;ra(63,j|0,o|0);n=x;x=0;if(n&1){f=Wa()|0;Sm(o);Sm(b);xn(j);break}Sm(o);x=0;f=va(28,q|0,49029,57)|0;o=x;x=0;if(!(o&1)?(x=0,Aa(36,f|0,0)|0,o=x,x=0,!(o&1)):0){h=Va(16)|0;x=0;ra(64,p|0,j|0);o=x;x=0;if(!(o&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,p|0);o=x;x=0;if(o&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(p);if(!g){p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}}else f=Wa()|0;Ua(h|0);p=f;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}p=Wa()|0;k[q>>2]=36200;k[l>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(l);fb(p|0)}while(0);q=f;qn(l);fb(q|0)}while(0);g=a+20|0;if((k[f+28>>2]|0)!=536870912){q=k[g>>2]|0;Wd(a,q,c,d,e);r=n;return}Yc(k[g>>2]|0,ia(m,k[f+16>>2]|0)|0);q=k[g>>2]|0;Wd(a,q,c,d,e);r=n;return}function Yd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0;l=a+4|0;a=k[l>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){h=j[b+(a*6|0)+2>>1]|0;e=j[b+(a*6|0)+4>>1]|0;j[c+(a*6|0)>>1]=j[b+(a*6|0)>>1]|0;j[c+(a*6|0)+2>>1]=h;j[c+(a*6|0)+4>>1]=e;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=j[b+(g+e<<1)>>1]|0;h=j[b+(g+f<<1)>>1]|0;j[c+(g*6|0)>>1]=j[b+(g<<1)>>1]|0;j[c+(g*6|0)+2>>1]=n;j[c+(g*6|0)+4>>1]=h;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{n=j[b+(g<<1)>>1]|0;q=j[b+(g+f<<1)>>1]|0;o=m[b+(g+a<<1)>>1]|0;p=ww(m[b+(g+e<<1)>>1]|0,0,16)|0;o=M|o;q=ww(q&65535|0,0,48)|0;q=p|n&65535|q;o=o&65535|M;n=c+(g<<3)|0;p=n;j[p>>1]=q;j[p+2>>1]=q>>>16;n=n+4|0;j[n>>1]=o;j[n+2>>1]=o>>>16;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[l>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)<=0)return;a=c;f=0;while(1){q=a+4|0;p=j[a>>1]|0;j[a>>1]=j[q>>1]|0;j[q>>1]=p;f=f+1|0;if((f|0)==(d|0))break;else a=a+(g<<1)|0}return}function Zd(a){a=a|0;return}function _d(a){a=a|0;mj(a);return}function $d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=ia(k[a+8>>2]|0,c)|0;a=k[a+4>>2]|0;if((Qb[k[(k[a>>2]|0)+48>>2]&63](a,b,c)|0)==(c|0))return;d=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,d|0,3,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(d|0);fb(a|0)}else ub(d|0,824,96)}function ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+16|0;l=m;j=a+8|0;e=k[j>>2]|0;d=ia(e,c)|0;do if(d){g=a+4|0;f=d;while(1){e=k[g>>2]|0;e=Qb[k[(k[e>>2]|0)+32>>2]&63](e,b,f)|0;if(!e)break;d=f-e|0;if((f|0)==(e|0)){h=11;break}else f=d}if((h|0)==11){e=k[j>>2]|0;f=d;break}d=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,d|0,3,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(d|0);fb(a|0)}else ub(d|0,824,96)}else f=0;while(0);if((e|0)==2){Yc(b,c<<1);e=k[j>>2]|0}d=k[a+12>>2]|0;if((d|0)<=(ia(e,c)|0)){r=m;return}a=k[a+4>>2]|0;Sb[k[(k[a>>2]|0)+16>>2]&15](l,a,d-f|0,0,1,24);r=m;return}function be(a){a=a|0;mj(a);return}function ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=a+4|0;vw(k[d>>2]|0,b|0,ia(k[a+8>>2]|0,c)|0)|0;k[d>>2]=(k[d>>2]|0)+(k[a+12>>2]|0);return}function de(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=a+4|0;vw(b|0,k[d>>2]|0,ia(k[a+8>>2]|0,c)|0)|0;k[d>>2]=(k[d>>2]|0)+(k[a+12>>2]|0);return}function ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;k[a+112>>2]=0;k[a+108>>2]=0;l=k[b>>2]|0;e=l;do if(l){g=a+92|0;l=a+96|0;h=k[l>>2]|0;j=k[g>>2]|0;c=j;d=h-c|0;if(d>>>0>=4e4)if(d>>>0>4e4?(f=j+4e4|0,(h|0)!=(f|0)):0){k[l>>2]=f;f=c}else f=c;else{fe(g,4e4-d|0);f=k[g>>2]|0;e=k[b>>2]|0}c=a+116|0;k[c>>2]=f;h=a+124|0;k[h>>2]=f;j=a+104|0;k[j>>2]=e;d=e;if(e){if((k[d+12>>2]|0)==(k[d+16>>2]|0)){b=(Ob[k[(k[e>>2]|0)+36>>2]&127](d)|0)==-1;d=k[h>>2]|0;if(b)break;e=k[c>>2]|0}else{d=f;e=f}g=d-e|0;if(g>>>0<=64){f=a+92|0;if((d|0)==(e|0))d=e;else{d=e;e=0;do{i[(k[f>>2]|0)+e>>0]=i[d+e>>0]|0;e=e+1|0;d=k[c>>2]|0}while(e>>>0>>0);e=k[h>>2]|0}f=k[f>>2]|0;b=f;m=b-d|0;k[c>>2]=f;d=e+m|0;k[h>>2]=d;f=a+120|0;k[f>>2]=(k[f>>2]|0)+m;j=k[j>>2]|0;d=Qb[k[(k[j>>2]|0)+32>>2]&63](j,d,(k[l>>2]|0)-(b+g)|0)|0;d=(k[h>>2]|0)+d|0;k[h>>2]=d}}else d=f}else{k[a+104>>2]=0;d=k[b+4>>2]|0;c=a+116|0;k[c>>2]=d;d=d+(k[b+8>>2]|0)|0;k[a+124>>2]=d}while(0);c=k[c>>2]|0;if(c>>>0>=d>>>0){l=c;m=a+120|0;k[m>>2]=l;qe(a);return}while(1){if((i[c>>0]|0)==-1){d=20;break}c=c+1|0;if(c>>>0>=d>>>0){d=20;break}}if((d|0)==20){m=a+120|0;k[m>>2]=c;qe(a);return}}function fe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=a+8|0;e=k[j>>2]|0;l=a+4|0;c=k[l>>2]|0;d=c;if((e-d|0)>>>0>=b>>>0){do{i[c>>0]=0;c=(k[l>>2]|0)+1|0;k[l>>2]=c;b=b+-1|0}while((b|0)!=0);return}c=k[a>>2]|0;f=d-c+b|0;if((f|0)<0){jj(a);e=k[j>>2]|0;c=k[a>>2]|0}d=e-c|0;if(d>>>0<1073741823){d=d<<1;d=d>>>0>>0?f:d;c=(k[l>>2]|0)-c|0;if(!d){e=0;g=0;f=c}else h=8}else{d=2147483647;c=(k[l>>2]|0)-c|0;h=8}if((h|0)==8){e=d;g=lj(d)|0;f=c}c=g+f|0;e=g+e|0;d=c;do{i[d>>0]=0;d=c+1|0;c=d;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[l>>2]|0)-b|0;h=g+(f-d)|0;vw(h|0,b|0,d|0)|0;k[a>>2]=h;k[l>>2]=c;k[j>>2]=e;if(!b)return;mj(b);return}function ge(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;u=r;r=r+32|0;w=u+12|0;t=u;p=a+180|0;q=(k[p>>2]|0)+4|0;if((k[a+32>>2]|0)==1)s=k[a+24>>2]|0;else s=1;b=ia(s<<1,q)|0;k[w>>2]=0;y=w+4|0;k[y>>2]=0;k[w+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,w|0),v=x,x=0,v&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,v=x,x=0,!(v&1)):0){k[w>>2]=d;v=d+(b<<1)|0;k[w+8>>2]=v;sw(d|0,0,c|0)|0;k[y>>2]=v;break}d=Wa()|0;b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[t>>2]=0;v=t+4|0;k[v>>2]=0;k[t+8>>2]=0;do if(!s)g=18;else{if(!(s>>>0>1073741823?(x=0,qa(178,t|0),o=x,x=0,o&1):0))g=16;if((g|0)==16?(e=s<<2,x=0,f=ta(67,e|0)|0,o=x,x=0,!(o&1)):0){k[t>>2]=f;g=f+(s<<2)|0;k[t+8>>2]=g;sw(f|0,0,e|0)|0;k[v>>2]=g;g=18;break}d=Wa()|0;b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+12|0;a:do if((k[f>>2]|0)>0){g=a+4604|0;h=(ia(s,q)|0)+1|0;i=a+4608|0;l=a+92|0;m=(s|0)>0;n=a+4600|0;o=0;b:while(1){c=k[w>>2]|0;b=c+2|0;k[g>>2]=b;c=c+(h<<1)|0;k[i>>2]=c;if(!(o&1))b=c;else{k[g>>2]=c;k[i>>2]=b}e=k[l>>2]|0;x=0;Ja(k[(k[e>>2]|0)+12>>2]|0,e|0,b|0,k[p>>2]|0,q|0);e=x;x=0;if(e&1){g=28;break}if(m){b=k[g>>2]|0;c=k[i>>2]|0;d=k[t>>2]|0;e=0;do{k[n>>2]=k[d+(e<<2)>>2];d=k[p>>2]|0;j[b+(d<<1)>>1]=j[b+(d+-1<<1)>>1]|0;j[c+-2>>1]=j[b>>1]|0;x=0;ra(68,a|0,0);d=x;x=0;if(d&1){g=27;break b}d=k[t>>2]|0;k[d+(e<<2)>>2]=k[n>>2];b=(k[g>>2]|0)+(q<<1)|0;k[g>>2]=b;c=(k[i>>2]|0)+(q<<1)|0;k[i>>2]=c;e=e+1|0}while((e|0)<(s|0))}o=o+1|0;if((o|0)>=(k[f>>2]|0)){g=40;break a}}if((g|0)==27){d=Wa()|0;break}else if((g|0)==28){d=Wa()|0;break}}else g=40;while(0);do if((g|0)==40){x=0;qa(182,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[t>>2]|0;c=b;if(b){d=k[v>>2]|0;if((d|0)!=(b|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[w>>2]|0;if(!b){r=u;return}c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=u;return}while(0);b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function he(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+4604|0;b=k[p>>2]|0;s=a+180|0;if((k[s>>2]|0)<=0)return;q=a+4608|0;r=a+4612|0;e=b;f=m[b+-2>>1]|0;b=m[b>>1]|0;o=0;while(1){n=k[q>>2]|0;l=m[n+(o+-1<<1)>>1]|0;d=o+1|0;c=m[e+(d<<1)>>1]|0;h=k[r>>2]|0;g=b-f|0;e=f-l|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(me(a,o,0)|0)+o|0;c=k[p>>2]|0;b=m[c+(d+-1<<1)>>1]|0;c=m[c+(d<<1)>>1]|0}else{f=b-l>>31;if((f^e|0)<0)e=b;else e=l+((f^g|0)<0?0:g)|0;n=le(a,h,m[n+(o<<1)>>1]|0,e,0)|0;j[(k[q>>2]|0)+(o<<1)>>1]=n}if((d|0)>=(k[s>>2]|0))break;e=k[p>>2]|0;f=b;b=c;o=d}return}function ie(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;e=a+104|0;if((k[e>>2]|0)>>>0<4)je(a);f=a+100|0;g=a+112|0;h=a+96|0;j=a+108|0;l=a+116|0;b=k[f>>2]|0;d=0;do{c=i[g>>0]|0;if((b|0)>31)break;b=k[h>>2]|0;if(!(c<<24>>24)){i[k[j>>2]>>0]=b>>>24;k[h>>2]=k[h>>2]<<8;b=(k[f>>2]|0)+8|0}else{i[k[j>>2]>>0]=b>>>25;k[h>>2]=k[h>>2]<<7;b=(k[f>>2]|0)+7|0}k[f>>2]=b;m=k[j>>2]|0;c=(i[m>>0]|0)==-1&1;i[g>>0]=c;k[j>>2]=m+1;k[e>>2]=(k[e>>2]|0)+-1;k[l>>2]=(k[l>>2]|0)+1;d=d+1|0}while((d|0)<4);if(!(c<<24>>24))ke(a,0,(b|0)%8|0);else ke(a,0,(b+-1|0)%8|0);if((k[e>>2]|0)>>>0<4)je(a);b=k[f>>2]|0;c=0;do{if((b|0)>31)break;b=k[h>>2]|0;if(!(i[g>>0]|0)){i[k[j>>2]>>0]=b>>>24;k[h>>2]=k[h>>2]<<8;b=(k[f>>2]|0)+8|0}else{i[k[j>>2]>>0]=b>>>25;k[h>>2]=k[h>>2]<<7;b=(k[f>>2]|0)+7|0}k[f>>2]=b;m=k[j>>2]|0;i[g>>0]=(i[m>>0]|0)==-1&1;k[j>>2]=m+1;k[e>>2]=(k[e>>2]|0)+-1;k[l>>2]=(k[l>>2]|0)+1;c=c+1|0}while((c|0)<4);if(!(k[a+132>>2]|0))return;je(a);return}function je(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+132>>2]|0;if(!b){b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,4,35648);a=x;x=0;if(!(a&1))ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}c=a+108|0;d=a+120|0;f=k[d>>2]|0;e=(k[c>>2]|0)-f|0;if((Qb[k[(k[b>>2]|0)+48>>2]&63](b,f,e)|0)==(e|0)){f=k[d>>2]|0;k[c>>2]=f;k[a+104>>2]=(k[a+124>>2]|0)-f;return}b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,4,35648);f=x;x=0;if(!(f&1))ub(b|0,824,96);f=Wa()|0;Ua(b|0);fb(f|0)}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;l=a+100|0;c=(k[l>>2]|0)-c|0;k[l>>2]=c;if((c|0)>-1){m=a+96|0;k[m>>2]=k[m>>2]|b<>2]=k[m>>2]|b>>0-c;j=a+104|0;if((k[j>>2]|0)>>>0<4){je(a);c=k[l>>2]|0}f=a+112|0;g=a+108|0;h=a+116|0;d=0;while(1){if((c|0)>31)break;c=k[m>>2]|0;if(!(i[f>>0]|0)){i[k[g>>2]>>0]=c>>>24;k[m>>2]=k[m>>2]<<8;c=(k[l>>2]|0)+8|0}else{i[k[g>>2]>>0]=c>>>25;k[m>>2]=k[m>>2]<<7;c=(k[l>>2]|0)+7|0}k[l>>2]=c;n=k[g>>2]|0;i[f>>0]=(i[n>>0]|0)==-1&1;k[g>>2]=n+1;k[j>>2]=(k[j>>2]|0)+-1;k[h>>2]=(k[h>>2]|0)+1;d=d+1|0;if((d|0)>=4){e=11;break}}a:do if((e|0)==11)if((c|0)<0){k[m>>2]=k[m>>2]|b>>0-c;if((k[j>>2]|0)>>>0<4){je(a);c=k[l>>2]|0;d=0}else d=0;do{if((c|0)>31)break a;c=k[m>>2]|0;if(!(i[f>>0]|0)){i[k[g>>2]>>0]=c>>>24;k[m>>2]=k[m>>2]<<8;c=(k[l>>2]|0)+8|0}else{i[k[g>>2]>>0]=c>>>25;k[m>>2]=k[m>>2]<<7;c=(k[l>>2]|0)+7|0}k[l>>2]=c;n=k[g>>2]|0;i[f>>0]=(i[n>>0]|0)==-1&1;k[g>>2]=n+1;k[j>>2]=(k[j>>2]|0)+-1;k[h>>2]=(k[h>>2]|0)+1;d=d+1|0}while((d|0)<4)}while(0);k[m>>2]=k[m>>2]|b<>31;f=(r^b)-r|0;p=a+196+(f*12|0)+10|0;g=j[p>>1]|0;o=a+196+(f*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){b=5;while(1)if((g<>1]^r)-r+d|0;q=a+136|0;d=k[q>>2]|0;if((e&d|0)==(e|0))l=e;else l=d&~(e>>31);e=(c-l^r)-r|0;i=a+144|0;d=k[i>>2]|0;if((e|0)>0)e=(e+d|0)/(d<<1|1|0)|0;else e=(e-d|0)/(d<<1|1|0)|0;n=a+140|0;h=k[n>>2]|0;c=((e|0)<0?h:0)+e|0;h=c-((c|0)<((h+1|0)/2|0|0)?0:h)|0;f=a+196+(f*12|0)+4|0;if(!(d|b))e=(k[f>>2]<<1)+-1+g>>31;else e=0;d=e^h;pe(a,b,d>>30^d<<1,k[a+156>>2]|0);d=k[a+160>>2]|0;b=(k[o>>2]|0)+((h|0)>-1?h:0-h|0)|0;e=(k[f>>2]|0)+(ia(k[i>>2]<<1|1,h)|0)|0;c=j[p>>1]|0;if((c|0)==(d|0)){b=b>>1;e=e>>1;c=d>>1}k[o>>2]=b;d=c+1|0;j[p>>1]=d;b=d+e|0;if((b|0)>=1){if((e|0)>0){e=e-d|0;p=j[m>>1]|0;j[m>>1]=(p<<16>>16<127&1)+(p&65535);e=(e|0)>0?0:e}}else{e=j[m>>1]|0;j[m>>1]=(e&65535)-(e<<16>>16>-128&1);e=(b|0)>(~c|0)?b:0-c|0}k[f>>2]=e;d=k[i>>2]|0;c=d<<1|1;b=(ia(c,(h^r)-r|0)|0)+l|0;if((b|0)>=(0-d|0)){e=k[q>>2]|0;if((e+d|0)<(b|0))b=b-(ia(k[n>>2]|0,c)|0)|0}else{b=(ia(k[n>>2]|0,c)|0)+b|0;e=k[q>>2]|0}if((b&e|0)==(b|0)){r=b;r=r&65535;return r|0}r=e&~(b>>31);r=r&65535;return r|0}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0;i=(k[a+180>>2]|0)-b|0;l=k[a+4608>>2]|0;n=k[a+4604>>2]|0;e=j[l+(b+-1<<1)>>1]|0;h=e&65535;c=k[a+144>>2]|0;f=0;while(1){d=l+(f+b<<1)|0;g=(m[d>>1]|0)-h|0;if((((g|0)>-1?g:0-g|0)|0)>(c|0))break;j[d>>1]=e;f=f+1|0;if((f|0)==(i|0)){f=i;break}}e=(f|0)==(i|0);g=a+4600|0;d=k[36476+(k[g>>2]<<2)>>2]|0;if((1<(f|0))c=f;else{c=f;do{ke(a,1,1);d=k[g>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[g>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>1]|0,h,m[n+(i<<1)>>1]|0)|0;j[b>>1]=a;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;a=f+1|0;return a|0}if(!c){a=i;return a|0}ke(a,1,1);a=i;return a|0}function ne(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c-d|0;i=a+136|0;g=a+144|0;e=k[g>>2]|0;if((((h|0)>-1?h:0-h|0)|0)>(e|0)){f=d-c>>31|1;b=ia(f,b-d|0)|0;if((b|0)>0)b=(e+b|0)/(e<<1|1|0)|0;else b=(b-e|0)/(e<<1|1|0)|0;h=a+140|0;e=k[h>>2]|0;c=((b|0)<0?e:0)+b|0;e=c-((c|0)<((e+1|0)/2|0|0)?0:e)|0;oe(a,a+4576|0,e);e=ia(e,f)|0;f=k[g>>2]|0;g=f<<1|1;e=(ia(e,g)|0)+d|0;if((e|0)>=(0-f|0)){b=k[i>>2]|0;if((b+f|0)<(e|0))e=e-(ia(k[h>>2]|0,g)|0)|0}else{e=(ia(k[h>>2]|0,g)|0)+e|0;b=k[i>>2]|0}if((e&b|0)==(e|0)){i=e;i=i&65535;return i|0}i=b&~(e>>31);i=i&65535;return i|0}else{b=b-c|0;if((b|0)>0)b=(e+b|0)/(e<<1|1|0)|0;else b=(b-e|0)/(e<<1|1|0)|0;h=a+140|0;e=k[h>>2]|0;f=((b|0)<0?e:0)+b|0;e=f-((f|0)<((e+1|0)/2|0|0)?0:e)|0;oe(a,a+4588|0,e);f=k[g>>2]|0;g=f<<1|1;e=(ia(g,e)|0)+c|0;if((e|0)>=(0-f|0)){b=k[i>>2]|0;if((b+f|0)<(e|0))e=e-(ia(k[h>>2]|0,g)|0)|0}else{e=(ia(k[h>>2]|0,g)|0)+e|0;b=k[i>>2]|0}if((e&b|0)==(e|0)){i=e;i=i&65535;return i|0}i=b&~(e>>31);i=i&65535;return i|0}return 0}function oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;pe(a,e,d,(k[a+156>>2]|0)+-1-(k[36476+(k[a+4600>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=c>>b;f=a+148|0;g=d-(k[f>>2]|0)|0;if((e|0)<(g+-1|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-31-(k[f>>2]|0)|0)}else ke(a,1,g);b=k[f>>2]|0;ke(a,(1<>2]|0;j=a+120|0;if(b>>>0<((k[j>>2]|0)+-3|0)>>>0){j=a+112|0;g=k[j>>2]|0;a=a+108|0;k[a>>2]=(l[b+1>>0]<<16|l[b>>0]<<24|l[b+2>>0]<<8|l[b+3>>0])>>>g|k[a>>2];a=32-g>>3;k[h>>2]=b+a;k[j>>2]=(a<<3)+g;return}g=a+104|0;c=k[g>>2]|0;do if(c){if((k[c+12>>2]|0)==(k[c+16>>2]|0)){if((Ob[k[(k[c>>2]|0)+36>>2]&127](c)|0)==-1)break;b=k[h>>2]|0}e=a+124|0;c=k[e>>2]|0;f=c-b|0;if(f>>>0<=64){d=a+92|0;if((c|0)==(b|0))c=b;else{c=0;do{i[(k[d>>2]|0)+c>>0]=i[b+c>>0]|0;c=c+1|0;b=k[h>>2]|0}while(c>>>0>>0);c=b;b=k[e>>2]|0}n=k[d>>2]|0;d=n;m=d-c|0;k[h>>2]=n;c=b+m|0;k[e>>2]=c;k[j>>2]=(k[j>>2]|0)+m;g=k[g>>2]|0;g=Qb[k[(k[g>>2]|0)+32>>2]&63](g,c,(k[a+96>>2]|0)-(d+f)|0)|0;k[e>>2]=(k[e>>2]|0)+g}}while(0);g=a+112|0;f=a+108|0;a=k[a+124>>2]|0;e=a+-1|0;b=k[h>>2]|0;while(1){if(b>>>0>=a>>>0){c=14;break}d=i[b>>0]|0;c=d&255;d=d<<24>>24==-1;if(d){if((b|0)==(e|0)){c=25;break}b=b+1|0;if((i[b>>0]|0)<0){c=25;break}}else b=b+1|0;n=k[g>>2]|0;k[f>>2]=c<<24-n|k[f>>2];k[h>>2]=b;n=n+(d?7:8)|0;k[g>>2]=n;if((n|0)>=24){c=33;break}}if((c|0)==14){if((k[g>>2]|0)>=1)return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,5,35648);n=x;x=0;if(!(n&1))ub(b|0,824,96);n=Wa()|0;Ua(b|0);fb(n|0)}else if((c|0)==25){if((k[g>>2]|0)>=1)return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,5,35648);n=x;x=0;if(!(n&1))ub(b|0,824,96);n=Wa()|0;Ua(b|0);fb(n|0)}else if((c|0)==33){a:do if(b>>>0>>0)do{if((i[b>>0]|0)==-1)break a;b=b+1|0}while(b>>>0>>0);while(0);k[j>>2]=b;return}}function re(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+144|0;a:do if(!(k[n>>2]|0)){c=k[a+136>>2]|0;b=a+152|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+184>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+188>>2]|0):0)?(k[d+12>>2]|0)==(k[a+192>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4612>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4612>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4612>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4612>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+152|0;while(0);m=1<>2];c=a+4616|0;d=m<<1;e=a+4620|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4612|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+192|0;j=a+188|0;g=a+184|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=a+8|0;e=k[j>>2]|0;l=a+4|0;c=k[l>>2]|0;d=c;if((e-d|0)>>>0>=b>>>0){do{i[c>>0]=0;c=(k[l>>2]|0)+1|0;k[l>>2]=c;b=b+-1|0}while((b|0)!=0);return}c=k[a>>2]|0;f=d-c+b|0;if((f|0)<0){jj(a);e=k[j>>2]|0;c=k[a>>2]|0}d=e-c|0;if(d>>>0<1073741823){d=d<<1;d=d>>>0>>0?f:d;c=(k[l>>2]|0)-c|0;if(!d){e=0;g=0;f=c}else h=8}else{d=2147483647;c=(k[l>>2]|0)-c|0;h=8}if((h|0)==8){e=d;g=lj(d)|0;f=c}c=g+f|0;e=g+e|0;d=c;do{i[d>>0]=0;d=c+1|0;c=d;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[l>>2]|0)-b|0;h=g+(f-d)|0;vw(h|0,b|0,d|0)|0;k[a>>2]=h;k[l>>2]=c;k[j>>2]=e;if(!b)return;mj(b);return}function te(a){a=a|0;var b=0,c=0;k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function ue(a){a=a|0;var b=0,c=0;k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function ve(a){a=a|0;var b=0,c=0;k[a>>2]=36052;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function we(a){a=a|0;var b=0,c=0;k[a>>2]=36052;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+136>>2]|0,k[a+144>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+184>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+188>>2]=f;k[a+192>>2]=e;He(a);e=a+140|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+196+(f*12|0)>>2]=b;k[a+196+(f*12|0)+4>>2]=0;j[a+196+(f*12|0)+8>>1]=0;j[a+196+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4576>>2]=h;k[a+4580>>2]=0;i[a+4584>>0]=l;i[a+4585>>0]=1;i[a+4586>>0]=0;k[a+4588>>2]=h;k[a+4592>>2]=1;i[a+4596>>0]=l;i[a+4597>>0]=1;i[a+4598>>0]=0;k[a+4600>>2]=0;r=g;return}function ye(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4624)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35828;k[b+128>>2]=k[a+136>>2];k[b+132>>2]=k[a+140>>2];k[b+136>>2]=k[a+144>>2];k[b+140>>2]=k[a+148>>2];k[b+144>>2]=k[a+152>>2];k[b+148>>2]=k[a+156>>2];k[b+152>>2]=k[a+160>>2];e=b+156|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+172>>2]=k[d>>2];k[b+176>>2]=0;k[b+180>>2]=0;k[b+184>>2]=0;e=b+4568|0;d=b+188|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4580|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4592|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];Ae(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;Ae(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}\nfunction ze(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=6;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=6;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Ae(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;t=r;r=r+32|0;v=t+12|0;s=t;o=a+180|0;p=(k[o>>2]|0)+4|0;if((k[a+32>>2]|0)==1)q=k[a+24>>2]|0;else q=1;b=ia(q<<1,p)|0;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;do if(b){if(!(b>>>0>715827882?(x=0,qa(178,v|0),u=x,x=0,u&1):0))g=6;if((g|0)==6?(x=0,c=ta(67,b*6|0)|0,u=x,x=0,!(u&1)):0){k[w>>2]=c;k[v>>2]=c;d=c+(b*6|0)|0;k[v+8>>2]=d;while(1){j[c>>1]=0;j[c+2>>1]=0;j[c+4>>1]=0;b=b+-1|0;if(!b)break;else c=c+6|0}k[w>>2]=d;break}d=Wa()|0;b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);fb(d|0)}while(0);k[s>>2]=0;u=s+4|0;k[u>>2]=0;k[s+8>>2]=0;do if(!q)g=20;else{if(!(q>>>0>1073741823?(x=0,qa(178,s|0),n=x,x=0,n&1):0))g=18;if((g|0)==18?(e=q<<2,x=0,f=ta(67,e|0)|0,n=x,x=0,!(n&1)):0){k[s>>2]=f;g=f+(q<<2)|0;k[s+8>>2]=g;sw(f|0,0,e|0)|0;k[u>>2]=g;g=20;break}d=Wa()|0;b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==20){e=a+12|0;a:do if((k[e>>2]|0)>0){f=a+4604|0;g=(ia(q,p)|0)+1|0;h=a+4608|0;i=a+92|0;l=(q|0)>0;m=a+4600|0;n=0;b:while(1){c=k[v>>2]|0;b=c+6|0;k[f>>2]=b;c=c+(g*6|0)|0;k[h>>2]=c;if(!(n&1))b=c;else{k[f>>2]=c;k[h>>2]=b}d=k[i>>2]|0;x=0;Ja(k[(k[d>>2]|0)+12>>2]|0,d|0,b|0,k[o>>2]|0,p|0);d=x;x=0;if(d&1){g=30;break}if(l){b=k[s>>2]|0;c=k[f>>2]|0;d=0;do{k[m>>2]=k[b+(d<<2)>>2];y=k[o>>2]|0;b=c+(y*6|0)|0;c=c+((y+-1|0)*6|0)|0;j[b>>1]=j[c>>1]|0;j[b+2>>1]=j[c+2>>1]|0;j[b+4>>1]=j[c+4>>1]|0;c=(k[h>>2]|0)+-6|0;b=k[f>>2]|0;j[c>>1]=j[b>>1]|0;j[c+2>>1]=j[b+2>>1]|0;j[c+4>>1]=j[b+4>>1]|0;x=0;ra(69,a|0,0);c=x;x=0;if(c&1){g=29;break b}b=k[s>>2]|0;k[b+(d<<2)>>2]=k[m>>2];c=(k[f>>2]|0)+(p*6|0)|0;k[f>>2]=c;k[h>>2]=(k[h>>2]|0)+(p*6|0);d=d+1|0}while((d|0)<(q|0))}n=n+1|0;if((n|0)>=(k[e>>2]|0)){g=42;break a}}if((g|0)==29){d=Wa()|0;break}else if((g|0)==30){d=Wa()|0;break}}else g=42;while(0);do if((g|0)==42){x=0;qa(182,a|0);y=x;x=0;if(y&1){d=Wa()|0;break}b=k[s>>2]|0;c=b;if(b){d=k[u>>2]|0;if((d|0)!=(b|0))k[u>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[v>>2]|0;if(!b){r=t;return}c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);r=t;return}while(0);b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);fb(d|0)}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;B=a+180|0;if((k[B>>2]|0)<=0)return;C=a+4608|0;D=a+4604|0;E=a+4612|0;A=0;while(1){x=A+-1|0;f=k[C>>2]|0;g=k[D>>2]|0;b=A+1|0;e=m[g+(A*6|0)>>1]|0;z=k[E>>2]|0;h=m[g+(x*6|0)>>1]|0;l=e-h|0;n=m[f+(x*6|0)>>1]|0;o=h-n|0;p=((((i[z+((m[g+(b*6|0)>>1]|0)-e)>>0]|0)*9|0)+(i[z+l>>0]|0)|0)*9|0)+(i[z+o>>0]|0)|0;d=m[g+(A*6|0)+2>>1]|0;q=m[g+(x*6|0)+2>>1]|0;r=d-q|0;s=m[f+(x*6|0)+2>>1]|0;t=q-s|0;u=((((i[z+((m[g+(b*6|0)+2>>1]|0)-d)>>0]|0)*9|0)+(i[z+r>>0]|0)|0)*9|0)+(i[z+t>>0]|0)|0;c=m[g+(A*6|0)+4>>1]|0;v=m[g+(x*6|0)+4>>1]|0;w=c-v|0;x=m[f+(x*6|0)+4>>1]|0;y=v-x|0;z=((((i[z+((m[g+(b*6|0)+4>>1]|0)-c)>>0]|0)*9|0)+(i[z+w>>0]|0)|0)*9|0)+(i[z+y>>0]|0)|0;if(!(u|p|z))b=(Ce(a,A,0)|0)+A|0;else{g=m[f+(A*6|0)>>1]|0;f=e-n>>31;if((f^o|0)>=0)if((f^l|0)<0)e=n;else e=n-h+e|0;g=De(a,p,g,e,0)|0;f=m[(k[C>>2]|0)+(A*6|0)+2>>1]|0;e=d-s>>31;if((e^t|0)>=0)if((e^r|0)<0)d=s;else d=s-q+d|0;e=De(a,u,f,d,0)|0;f=m[(k[C>>2]|0)+(A*6|0)+4>>1]|0;d=c-x>>31;if((d^y|0)>=0)if((d^w|0)<0)c=x;else c=x-v+c|0;y=De(a,z,f,c,0)|0;z=k[C>>2]|0;j[z+(A*6|0)>>1]=g;j[z+(A*6|0)+2>>1]=e;j[z+(A*6|0)+4>>1]=y}if((b|0)<(k[B>>2]|0))A=b;else break}return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=r;r=r+48|0;q=B+30|0;p=B+24|0;o=B+18|0;s=B+12|0;x=B+6|0;y=B;z=(k[a+180>>2]|0)-b|0;A=k[a+4608>>2]|0;t=k[a+4604>>2]|0;w=b+-1|0;u=j[A+(w*6|0)>>1]|0;v=j[A+(w*6|0)+2>>1]|0;w=j[A+(w*6|0)+4>>1]|0;c=u&65535;d=a+144|0;e=v&65535;f=w&65535;n=0;while(1){i=n+b|0;g=A+(i*6|0)|0;h=A+(i*6|0)+2|0;i=A+(i*6|0)+4|0;C=(m[g>>1]|0)-c|0;l=k[d>>2]|0;if((((C|0)>-1?C:0-C|0)|0)>(l|0))break;C=(m[h>>1]|0)-e|0;if((((C|0)>-1?C:0-C|0)|0)>(l|0))break;C=(m[i>>1]|0)-f|0;if((((C|0)>-1?C:0-C|0)|0)>(l|0))break;j[g>>1]=u;j[h>>1]=v;j[i>>1]=w;n=n+1|0;if((n|0)==(z|0)){n=z;break}}e=(n|0)==(z|0);f=a+4600|0;d=k[36476+(k[f>>2]<<2)>>2]|0;if((1<(n|0))c=n;else{c=n;do{ke(a,1,1);d=k[f>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[f>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>1]=j[C>>1]|0;j[x+2>>1]=j[C+2>>1]|0;j[x+4>>1]=j[C+4>>1]|0;j[y>>1]=u;j[y+2>>1]=v;j[y+4>>1]=w;b=t+(b*6|0)|0;j[o>>1]=j[x>>1]|0;j[o+2>>1]=j[x+2>>1]|0;j[o+4>>1]=j[x+4>>1]|0;j[p>>1]=j[y>>1]|0;j[p+2>>1]=j[y+2>>1]|0;j[p+4>>1]=j[y+4>>1]|0;j[q>>1]=j[b>>1]|0;j[q+2>>1]=j[b+2>>1]|0;j[q+4>>1]=j[b+4>>1]|0;Fe(s,a,o,p,q);j[C>>1]=j[s>>1]|0;j[C+2>>1]=j[s+2>>1]|0;j[C+4>>1]=j[s+4>>1]|0;C=k[f>>2]|0;k[f>>2]=(C|0)<1?0:C+-1|0;C=n+1|0;r=B;return C|0}if(!c){C=z;r=B;return C|0}ke(a,1,1);C=z;r=B;return C|0}function De(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;f=(r^b)-r|0;p=a+196+(f*12|0)+10|0;g=j[p>>1]|0;o=a+196+(f*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){b=5;while(1)if((g<>1]^r)-r+d|0;q=a+136|0;d=k[q>>2]|0;if((e&d|0)==(e|0))l=e;else l=d&~(e>>31);e=(c-l^r)-r|0;i=a+144|0;d=k[i>>2]|0;if((e|0)>0)e=(e+d|0)/(d<<1|1|0)|0;else e=(e-d|0)/(d<<1|1|0)|0;n=a+140|0;h=k[n>>2]|0;c=((e|0)<0?h:0)+e|0;h=c-((c|0)<((h+1|0)/2|0|0)?0:h)|0;f=a+196+(f*12|0)+4|0;if(!(d|b))e=(k[f>>2]<<1)+-1+g>>31;else e=0;d=e^h;Ee(a,b,d>>30^d<<1,k[a+156>>2]|0);d=k[a+160>>2]|0;b=(k[o>>2]|0)+((h|0)>-1?h:0-h|0)|0;e=(k[f>>2]|0)+(ia(k[i>>2]<<1|1,h)|0)|0;c=j[p>>1]|0;if((c|0)==(d|0)){b=b>>1;e=e>>1;c=d>>1}k[o>>2]=b;d=c+1|0;j[p>>1]=d;b=d+e|0;if((b|0)>=1){if((e|0)>0){e=e-d|0;p=j[m>>1]|0;j[m>>1]=(p<<16>>16<127&1)+(p&65535);e=(e|0)>0?0:e}}else{e=j[m>>1]|0;j[m>>1]=(e&65535)-(e<<16>>16>-128&1);e=(b|0)>(~c|0)?b:0-c|0}k[f>>2]=e;d=k[i>>2]|0;c=d<<1|1;b=(ia(c,(h^r)-r|0)|0)+l|0;if((b|0)>=(0-d|0)){e=k[q>>2]|0;if((e+d|0)<(b|0))b=b-(ia(k[n>>2]|0,c)|0)|0}else{b=(ia(k[n>>2]|0,c)|0)+b|0;e=k[q>>2]|0}if((b&e|0)==(b|0)){r=b;r=r&65535;return r|0}r=e&~(b>>31);r=r&65535;return r|0}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=c>>b;f=a+148|0;g=d-(k[f>>2]|0)|0;if((e|0)<(g+-1|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-31-(k[f>>2]|0)|0)}else ke(a,1,g);b=k[f>>2]|0;ke(a,(1<>1]|0;p=o-(m[d>>1]|0)>>31|1;f=ia(p,(m[c>>1]|0)-o|0)|0;l=b+144|0;g=k[l>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;w=b+140|0;i=k[w>>2]|0;h=((f|0)<0?i:0)+f|0;i=h-((h|0)<((i+1|0)/2|0|0)?0:i)|0;h=b+4576|0;Ge(b,h,i);t=m[e+2>>1]|0;u=t-(m[d+2>>1]|0)>>31|1;f=ia(u,(m[c+2>>1]|0)-t|0)|0;g=k[l>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;q=k[w>>2]|0;v=((f|0)<0?q:0)+f|0;q=v-((v|0)<((q+1|0)/2|0|0)?0:q)|0;Ge(b,h,q);v=m[e+4>>1]|0;s=v-(m[d+4>>1]|0)>>31|1;f=ia(s,(m[c+4>>1]|0)-v|0)|0;g=k[l>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;n=k[w>>2]|0;f=((f|0)<0?n:0)+f|0;n=f-((f|0)<((n+1|0)/2|0|0)?0:n)|0;Ge(b,h,n);h=k[l>>2]|0;l=h<<1|1;f=(ia(ia(l,i)|0,p)|0)+o|0;c=0-h|0;if((f|0)>=(c|0)){g=k[r>>2]|0;if((g+h|0)<(f|0)){f=f-(ia(k[w>>2]|0,l)|0)|0;d=g}else d=g}else{f=(ia(k[w>>2]|0,l)|0)+f|0;d=k[r>>2]|0}if((f&d|0)!=(f|0))f=d&~(f>>31);e=f&65535;f=(ia(ia(l,q)|0,u)|0)+t|0;if((f|0)>=(c|0)){if((d+h|0)<(f|0))f=f-(ia(k[w>>2]|0,l)|0)|0}else f=(ia(k[w>>2]|0,l)|0)+f|0;if((f&d|0)!=(f|0))f=d&~(f>>31);g=f&65535;f=(ia(ia(l,n)|0,s)|0)+v|0;if((f|0)>=(c|0)){if((d+h|0)<(f|0))f=f-(ia(k[w>>2]|0,l)|0)|0}else f=(ia(k[w>>2]|0,l)|0)+f|0;if((f&d|0)==(f|0)){w=f;w=w&65535;j[a>>1]=e;v=a+2|0;j[v>>1]=g;a=a+4|0;j[a>>1]=w;return}w=d&~(f>>31);w=w&65535;j[a>>1]=e;v=a+2|0;j[v>>1]=g;a=a+4|0;j[a>>1]=w;return}function Ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;Ee(a,e,d,(k[a+156>>2]|0)+-1-(k[36476+(k[a+4600>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function He(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+144|0;a:do if(!(k[n>>2]|0)){c=k[a+136>>2]|0;b=a+152|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+184>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+188>>2]|0):0)?(k[d+12>>2]|0)==(k[a+192>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4612>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4612>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4612>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4612>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+152|0;while(0);m=1<>2];c=a+4616|0;d=m<<1;e=a+4620|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4612|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+192|0;j=a+188|0;g=a+184|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function Ie(a){a=a|0;var b=0,c=0;k[a>>2]=36024;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Je(a){a=a|0;var b=0,c=0;k[a>>2]=36024;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Ke(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+136>>2]|0,k[a+144>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+184>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+188>>2]=f;k[a+192>>2]=e;zf(a);e=a+140|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+196+(f*12|0)>>2]=b;k[a+196+(f*12|0)+4>>2]=0;j[a+196+(f*12|0)+8>>1]=0;j[a+196+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4576>>2]=h;k[a+4580>>2]=0;i[a+4584>>0]=l;i[a+4585>>0]=1;i[a+4586>>0]=0;k[a+4588>>2]=h;k[a+4592>>2]=1;i[a+4596>>0]=l;i[a+4597>>0]=1;i[a+4598>>0]=0;k[a+4600>>2]=0;r=g;return}function Le(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4624)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35800;k[b+128>>2]=k[a+136>>2];k[b+132>>2]=k[a+140>>2];k[b+136>>2]=k[a+144>>2];k[b+140>>2]=k[a+148>>2];k[b+144>>2]=k[a+152>>2];k[b+148>>2]=k[a+156>>2];k[b+152>>2]=k[a+160>>2];e=b+156|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+172>>2]=k[d>>2];k[b+176>>2]=0;k[b+180>>2]=0;k[b+184>>2]=0;e=b+4568|0;d=b+188|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4580|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4592|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];sf(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;sf(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function Me(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Ne(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;k[a>>2]=36712;k[a+4>>2]=c;m=a+8|0;d=k[c>>2]|0;j=c+16|0;g=k[j>>2]|0;f=ia(g,d)|0;k[m>>2]=0;n=a+12|0;k[n>>2]=0;k[a+16>>2]=0;do if(!f)f=g;else{if(!((f|0)<0?(x=0,qa(178,m|0),g=x,x=0,g&1):0))l=4;if((l|0)==4?(x=0,h=ta(67,f|0)|0,g=x,x=0,!(g&1)):0){k[n>>2]=h;k[m>>2]=h;k[a+16>>2]=h+f;d=h;do{i[d>>0]=0;d=(k[n>>2]|0)+1|0;k[n>>2]=d;f=f+-1|0}while((f|0)!=0);f=k[j>>2]|0;d=k[c>>2]|0;break}d=Wa()|0;e=k[m>>2]|0;if(e){if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e)}n=d;fb(n|0)}while(0);g=a+20|0;d=ia(f,d)|0;k[g>>2]=0;f=a+24|0;k[f>>2]=0;k[a+28>>2]=0;if(!d){n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))l=15;if((l|0)==15?(x=0,e=ta(67,d|0)|0,l=x,x=0,!(l&1)):0){k[f>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[f>>2]|0)+1|0;k[f>>2]=e;d=d+-1|0}while((d|0)!=0);n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}d=Wa()|0;e=k[g>>2]|0;if(e){if((k[f>>2]|0)!=(e|0))k[f>>2]=e;mj(e)}e=k[m>>2]|0;if(!e){n=d;fb(n|0)}if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e);n=d;fb(n|0)}function Oe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;k[a>>2]=36688;k[a+4>>2]=c;m=a+8|0;d=k[c>>2]|0;j=c+16|0;g=k[j>>2]|0;f=ia(g,d)|0;k[m>>2]=0;n=a+12|0;k[n>>2]=0;k[a+16>>2]=0;do if(!f)f=g;else{if(!((f|0)<0?(x=0,qa(178,m|0),g=x,x=0,g&1):0))l=4;if((l|0)==4?(x=0,h=ta(67,f|0)|0,g=x,x=0,!(g&1)):0){k[n>>2]=h;k[m>>2]=h;k[a+16>>2]=h+f;d=h;do{i[d>>0]=0;d=(k[n>>2]|0)+1|0;k[n>>2]=d;f=f+-1|0}while((f|0)!=0);f=k[j>>2]|0;d=k[c>>2]|0;break}d=Wa()|0;e=k[m>>2]|0;if(e){if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e)}n=d;fb(n|0)}while(0);g=a+20|0;d=ia(f,d)|0;k[g>>2]=0;f=a+24|0;k[f>>2]=0;k[a+28>>2]=0;if(!d){n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))l=15;if((l|0)==15?(x=0,e=ta(67,d|0)|0,l=x,x=0,!(l&1)):0){k[f>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[f>>2]|0)+1|0;k[f>>2]=e;d=d+-1|0}while((d|0)!=0);n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}d=Wa()|0;e=k[g>>2]|0;if(e){if((k[f>>2]|0)!=(e|0))k[f>>2]=e;mj(e)}e=k[m>>2]|0;if(!e){n=d;fb(n|0)}if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e);n=d;fb(n|0)}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;k[a>>2]=36664;k[a+4>>2]=c;m=a+8|0;d=k[c>>2]|0;j=c+16|0;g=k[j>>2]|0;f=ia(g,d)|0;k[m>>2]=0;n=a+12|0;k[n>>2]=0;k[a+16>>2]=0;do if(!f)f=g;else{if(!((f|0)<0?(x=0,qa(178,m|0),g=x,x=0,g&1):0))l=4;if((l|0)==4?(x=0,h=ta(67,f|0)|0,g=x,x=0,!(g&1)):0){k[n>>2]=h;k[m>>2]=h;k[a+16>>2]=h+f;d=h;do{i[d>>0]=0;d=(k[n>>2]|0)+1|0;k[n>>2]=d;f=f+-1|0}while((f|0)!=0);f=k[j>>2]|0;d=k[c>>2]|0;break}d=Wa()|0;e=k[m>>2]|0;if(e){if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e)}n=d;fb(n|0)}while(0);g=a+20|0;d=ia(f,d)|0;k[g>>2]=0;f=a+24|0;k[f>>2]=0;k[a+28>>2]=0;if(!d){n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))l=15;if((l|0)==15?(x=0,e=ta(67,d|0)|0,l=x,x=0,!(l&1)):0){k[f>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[f>>2]|0)+1|0;k[f>>2]=e;d=d+-1|0}while((d|0)!=0);n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}d=Wa()|0;e=k[g>>2]|0;if(e){if((k[f>>2]|0)!=(e|0))k[f>>2]=e;mj(e)}e=k[m>>2]|0;if(!e){n=d;fb(n|0)}if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e);n=d;fb(n|0)}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;k[a>>2]=36640;k[a+4>>2]=c;m=a+8|0;d=k[c>>2]|0;j=c+16|0;g=k[j>>2]|0;f=ia(g,d)|0;k[m>>2]=0;n=a+12|0;k[n>>2]=0;k[a+16>>2]=0;do if(!f)f=g;else{if(!((f|0)<0?(x=0,qa(178,m|0),g=x,x=0,g&1):0))l=4;if((l|0)==4?(x=0,h=ta(67,f|0)|0,g=x,x=0,!(g&1)):0){k[n>>2]=h;k[m>>2]=h;k[a+16>>2]=h+f;d=h;do{i[d>>0]=0;d=(k[n>>2]|0)+1|0;k[n>>2]=d;f=f+-1|0}while((f|0)!=0);f=k[j>>2]|0;d=k[c>>2]|0;break}d=Wa()|0;e=k[m>>2]|0;if(e){if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e)}n=d;fb(n|0)}while(0);g=a+20|0;d=ia(f,d)|0;k[g>>2]=0;f=a+24|0;k[f>>2]=0;k[a+28>>2]=0;if(!d){n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}if(!((d|0)<0?(x=0,qa(178,g|0),c=x,x=0,c&1):0))l=15;if((l|0)==15?(x=0,e=ta(67,d|0)|0,l=x,x=0,!(l&1)):0){k[f>>2]=e;k[g>>2]=e;k[a+28>>2]=e+d;do{i[e>>0]=0;e=(k[f>>2]|0)+1|0;k[f>>2]=e;d=d+-1|0}while((d|0)!=0);n=a+36|0;k[n>>2]=k[b>>2];k[n+4>>2]=k[b+4>>2];k[n+8>>2]=k[b+8>>2];return}d=Wa()|0;e=k[g>>2]|0;if(e){if((k[f>>2]|0)!=(e|0))k[f>>2]=e;mj(e)}e=k[m>>2]|0;if(!e){n=d;fb(n|0)}if((k[n>>2]|0)!=(e|0))k[n>>2]=e;mj(e);n=d;fb(n|0)}function Re(a){a=a|0;var b=0,c=0;k[a>>2]=36640;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=k[a+8>>2]|0;if(!c)return;b=a+12|0;if((k[b>>2]|0)!=(c|0))k[b>>2]=c;mj(c);return}function Se(a){a=a|0;var b=0,c=0;k[a>>2]=36640;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}b=k[a+8>>2]|0;if(!b){mj(a);return}c=a+12|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b);mj(a);return}function Te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+36|0;if(!(k[e>>2]|0)){e=a+40|0;Xe(a,b,k[e>>2]|0,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}f=ia(k[(k[a+4>>2]|0)+16>>2]|0,c)|0;g=a+20|0;Xe(a,b,k[g>>2]|0,c,d);a=k[e>>2]|0;if((Qb[k[(k[a>>2]|0)+48>>2]&63](a,k[g>>2]|0,f)|0)==(f|0))return;e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,3,35648);g=x;x=0;if(g&1){g=Wa()|0;Ua(e|0);fb(g|0)}else ub(e|0,824,96)}function Ue(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;Ve(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{We(a,e,b,c,d);return}}function Ve(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0;h=a+4|0;f=k[h>>2]|0;if(!(i[f+32>>0]|0))h=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*3|0)|0;f=k[h>>2]|0;b=k[f+16>>2]|0;if((d|0)>0){f=k[g>>2]|0;a=0;while(1){j=f+2|0;m=i[f>>0]|0;i[f>>0]=i[j>>0]|0;i[j>>0]=m;a=a+1|0;if((a|0)==(d|0))break;else f=f+b|0}f=k[h>>2]|0}h=k[g>>2]|0}switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{g=l[h+(f*3|0)+1>>0]|0;e=128-g+(l[h+(f*3|0)+2>>0]|0)|0;j=(l[h+(f*3|0)>>0]|0)-g+128|0;m=c+(f*3|0)|0;i[m>>0]=g+192+(((e&255)+(j&255)|0)>>>2);i[m+1>>0]=e;i[m+2>>0]=j;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{d=l[h+(b*3|0)+1>>0]|0;j=128-d+(l[h+(b*3|0)+2>>0]|0)|0;m=(l[h+(b*3|0)>>0]|0)-d+128|0;i[c+b>>0]=d+192+(((j&255)+(m&255)|0)>>>2);i[c+(b+e)>>0]=j;i[c+(b+a)>>0]=m;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{m=i[h+(g<<2)+3>>0]|0;n=l[h+(g<<2)+1>>0]|0;d=128-n+(l[h+(g<<2)+2>>0]|0)|0;j=(l[h+(g<<2)>>0]|0)-n+128|0;i[c+g>>0]=n+192+(((d&255)+(j&255)|0)>>>2);i[c+(g+e)>>0]=d;i[c+(g+a)>>0]=j;i[c+(g+b)>>0]=m;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function We(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+176|0;n=m+152|0;p=m+16|0;o=m;g=ia(k[(k[a+4>>2]|0)+16>>2]|0,d)|0;j=a+20|0;f=k[j>>2]|0;if(!g){p=f;Ve(a,p,c,d,e);r=m;return}while(1){h=Qb[k[(k[b>>2]|0)+32>>2]&63](b,f,g)|0;if(!h)break;f=k[j>>2]|0;if((g|0)==(h|0)){l=26;break}else g=g-h|0}if((l|0)==26){Ve(a,f,c,d,e);r=m;return}c=p+56|0;j=p+4|0;k[p>>2]=36160;k[c>>2]=36180;x=0;ra(62,p+56|0,j|0);m=x;x=0;if(m&1){p=Wa()|0;qn(c);fb(p|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=36200;k[p+56>>2]=36220;x=0;qa(180,j|0);m=x;x=0;do if(m&1)f=Wa()|0;else{k[j>>2]=36236;b=p+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[p+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;x=0;ra(63,j|0,n|0);m=x;x=0;if(m&1){f=Wa()|0;Sm(n);Sm(b);xn(j);break}Sm(n);x=0;f=va(28,p|0,49029,57)|0;n=x;x=0;if(!(n&1)?(x=0,Aa(36,f|0,0)|0,n=x,x=0,!(n&1)):0){h=Va(16)|0;x=0;ra(64,o|0,j|0);n=x;x=0;if(!(n&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,o|0);n=x;x=0;if(n&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(o);if(!g){o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}}else f=Wa()|0;Ua(h|0);o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}o=Wa()|0;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}while(0);p=f;qn(c);fb(p|0)}function Xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;j=a+4|0;a=k[j>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){g=l[b+(a*3|0)+1>>0]|0;f=l[b+(a*3|0)+2>>0]|0;h=(l[b+(a*3|0)>>0]|0)-((f+g|0)>>>2)+64|0;e=c+(a*3|0)|0;i[e>>0]=f+128+h;i[e+1>>0]=h;i[e+2>>0]=g+128+h;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=l[b+(g+e)>>0]|0;o=l[b+(g+f)>>0]|0;m=(l[b+g>>0]|0)-((o+n|0)>>>2)+64|0;h=c+(g*3|0)|0;i[h>>0]=o+128+m;i[h+1>>0]=m;i[h+2>>0]=n+128+m;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{m=l[b+(g+e)>>0]|0;p=l[b+(g+a)>>0]|0;n=(l[b+g>>0]|0)-((p+m|0)>>>2)+64|0;o=c+(g<<2)|0;n=n<<8&65280|l[b+(g+f)>>0]<<24|p+128+n&255|m+128+n<<16&16711680;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[j>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)>0){a=c;f=0}else return;while(1){p=a+2|0;o=i[a>>0]|0;i[a>>0]=i[p>>0]|0;i[p>>0]=o;f=f+1|0;if((f|0)==(d|0))break;else a=a+g|0}return}function Ye(a){a=a|0;var b=0,c=0;k[a>>2]=36664;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=k[a+8>>2]|0;if(!c)return;b=a+12|0;if((k[b>>2]|0)!=(c|0))k[b>>2]=c;mj(c);return}function Ze(a){a=a|0;var b=0,c=0;k[a>>2]=36664;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}b=k[a+8>>2]|0;if(!b){mj(a);return}c=a+12|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b);mj(a);return}function _e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+36|0;if(!(k[e>>2]|0)){e=a+40|0;cf(a,b,k[e>>2]|0,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}f=ia(k[(k[a+4>>2]|0)+16>>2]|0,c)|0;g=a+20|0;cf(a,b,k[g>>2]|0,c,d);a=k[e>>2]|0;if((Qb[k[(k[a>>2]|0)+48>>2]&63](a,k[g>>2]|0,f)|0)==(f|0))return;e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,3,35648);g=x;x=0;if(g&1){g=Wa()|0;Ua(e|0);fb(g|0)}else ub(e|0,824,96)}function $e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;af(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{bf(a,e,b,c,d);return}}function af(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0;h=a+4|0;f=k[h>>2]|0;if(!(i[f+32>>0]|0))h=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*3|0)|0;f=k[h>>2]|0;b=k[f+16>>2]|0;if((d|0)>0){f=k[g>>2]|0;a=0;while(1){j=f+2|0;m=i[f>>0]|0;i[f>>0]=i[j>>0]|0;i[j>>0]=m;a=a+1|0;if((a|0)==(d|0))break;else f=f+b|0}f=k[h>>2]|0}h=k[g>>2]|0}switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{b=l[h+(f*3|0)>>0]|0;e=i[h+(f*3|0)+1>>0]|0;g=e&255;j=(l[h+(f*3|0)+2>>0]|0)+128-((g+b|0)>>>1)&255;m=c+(f*3|0)|0;i[m>>0]=b+128-g;i[m+1>>0]=e;i[m+2>>0]=j;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{j=i[h+(b*3|0)+1>>0]|0;g=l[h+(b*3|0)>>0]|0;d=j&255;m=(l[h+(b*3|0)+2>>0]|0)+128-((d+g|0)>>>1)&255;i[c+b>>0]=g+128-d;i[c+(b+e)>>0]=j;i[c+(b+a)>>0]=m;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{d=i[h+(g<<2)+1>>0]|0;m=i[h+(g<<2)+3>>0]|0;o=l[h+(g<<2)>>0]|0;n=d&255;j=(l[h+(g<<2)+2>>0]|0)+128-((n+o|0)>>>1)&255;i[c+g>>0]=o+128-n;i[c+(g+e)>>0]=d;i[c+(g+a)>>0]=j;i[c+(g+b)>>0]=m;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function bf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+176|0;n=m+152|0;p=m+16|0;o=m;g=ia(k[(k[a+4>>2]|0)+16>>2]|0,d)|0;j=a+20|0;f=k[j>>2]|0;if(!g){p=f;af(a,p,c,d,e);r=m;return}while(1){h=Qb[k[(k[b>>2]|0)+32>>2]&63](b,f,g)|0;if(!h)break;f=k[j>>2]|0;if((g|0)==(h|0)){l=26;break}else g=g-h|0}if((l|0)==26){af(a,f,c,d,e);r=m;return}c=p+56|0;j=p+4|0;k[p>>2]=36160;k[c>>2]=36180;x=0;ra(62,p+56|0,j|0);m=x;x=0;if(m&1){p=Wa()|0;qn(c);fb(p|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=36200;k[p+56>>2]=36220;x=0;qa(180,j|0);m=x;x=0;do if(m&1)f=Wa()|0;else{k[j>>2]=36236;b=p+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[p+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;x=0;ra(63,j|0,n|0);m=x;x=0;if(m&1){f=Wa()|0;Sm(n);Sm(b);xn(j);break}Sm(n);x=0;f=va(28,p|0,49029,57)|0;n=x;x=0;if(!(n&1)?(x=0,Aa(36,f|0,0)|0,n=x,x=0,!(n&1)):0){h=Va(16)|0;x=0;ra(64,o|0,j|0);n=x;x=0;if(!(n&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,o|0);n=x;x=0;if(n&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(o);if(!g){o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}}else f=Wa()|0;Ua(h|0);o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}o=Wa()|0;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}while(0);p=f;qn(c);fb(p|0)}function cf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0;j=a+4|0;a=k[j>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){g=i[b+(a*3|0)+1>>0]|0;h=g&255;f=(l[b+(a*3|0)>>0]|0)+128+h|0;h=(l[b+(a*3|0)+2>>0]|0)+128+(((f&255)+h|0)>>>1)&255;e=c+(a*3|0)|0;i[e>>0]=f;i[e+1>>0]=g;i[e+2>>0]=h;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=i[b+(g+e)>>0]|0;m=n&255;o=(l[b+g>>0]|0)+128+m|0;m=(l[b+(g+f)>>0]|0)+128+(((o&255)+m|0)>>>1)&255;h=c+(g*3|0)|0;i[h>>0]=o;i[h+1>>0]=n;i[h+2>>0]=m;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{n=l[b+(g+e)>>0]|0;m=(l[b+g>>0]|0)+128+n&255;o=c+(g<<2)|0;n=m|n<<8|l[b+(g+f)>>0]<<24|(l[b+(g+a)>>0]|0)+128+((m+n|0)>>>1)<<16&16711680;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[j>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)>0){a=c;f=0}else return;while(1){o=a+2|0;n=i[a>>0]|0;i[a>>0]=i[o>>0]|0;i[o>>0]=n;f=f+1|0;if((f|0)==(d|0))break;else a=a+g|0}return}function df(a){a=a|0;var b=0,c=0;k[a>>2]=36688;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=k[a+8>>2]|0;if(!c)return;b=a+12|0;if((k[b>>2]|0)!=(c|0))k[b>>2]=c;mj(c);return}function ef(a){a=a|0;var b=0,c=0;k[a>>2]=36688;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}b=k[a+8>>2]|0;if(!b){mj(a);return}c=a+12|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b);mj(a);return}function ff(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+36|0;if(!(k[e>>2]|0)){e=a+40|0;kf(a,b,k[e>>2]|0,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}f=ia(k[(k[a+4>>2]|0)+16>>2]|0,c)|0;g=a+20|0;kf(a,b,k[g>>2]|0,c,d);a=k[e>>2]|0;if((Qb[k[(k[a>>2]|0)+48>>2]&63](a,k[g>>2]|0,f)|0)==(f|0))return;e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,3,35648);g=x;x=0;if(g&1){g=Wa()|0;Ua(e|0);fb(g|0)}else ub(e|0,824,96)}function gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;hf(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{jf(a,e,b,c,d);return}}function hf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0;h=a+4|0;f=k[h>>2]|0;if(!(i[f+32>>0]|0))h=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*3|0)|0;f=k[h>>2]|0;b=k[f+16>>2]|0;if((d|0)>0){f=k[g>>2]|0;a=0;while(1){j=f+2|0;m=i[f>>0]|0;i[f>>0]=i[j>>0]|0;i[j>>0]=m;a=a+1|0;if((a|0)==(d|0))break;else f=f+b|0}f=k[h>>2]|0}h=k[g>>2]|0}switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{e=i[h+(f*3|0)+1>>0]|0;g=e&255;j=128-g+(l[h+(f*3|0)+2>>0]|0)&255;m=c+(f*3|0)|0;i[m>>0]=(l[h+(f*3|0)>>0]|0)+128-g;i[m+1>>0]=e;i[m+2>>0]=j;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{j=i[h+(b*3|0)+1>>0]|0;d=j&255;m=128-d+(l[h+(b*3|0)+2>>0]|0)&255;i[c+b>>0]=(l[h+(b*3|0)>>0]|0)+128-d;i[c+(b+e)>>0]=j;i[c+(b+a)>>0]=m;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{d=i[h+(g<<2)+1>>0]|0;m=i[h+(g<<2)+3>>0]|0;n=d&255;j=128-n+(l[h+(g<<2)+2>>0]|0)&255;i[c+g>>0]=(l[h+(g<<2)>>0]|0)+128-n;i[c+(g+e)>>0]=d;i[c+(g+a)>>0]=j;i[c+(g+b)>>0]=m;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function jf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+176|0;n=m+152|0;p=m+16|0;o=m;g=ia(k[(k[a+4>>2]|0)+16>>2]|0,d)|0;j=a+20|0;f=k[j>>2]|0;if(!g){p=f;hf(a,p,c,d,e);r=m;return}while(1){h=Qb[k[(k[b>>2]|0)+32>>2]&63](b,f,g)|0;if(!h)break;f=k[j>>2]|0;if((g|0)==(h|0)){l=26;break}else g=g-h|0}if((l|0)==26){hf(a,f,c,d,e);r=m;return}c=p+56|0;j=p+4|0;k[p>>2]=36160;k[c>>2]=36180;x=0;ra(62,p+56|0,j|0);m=x;x=0;if(m&1){p=Wa()|0;qn(c);fb(p|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=36200;k[p+56>>2]=36220;x=0;qa(180,j|0);m=x;x=0;do if(m&1)f=Wa()|0;else{k[j>>2]=36236;b=p+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[p+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;x=0;ra(63,j|0,n|0);m=x;x=0;if(m&1){f=Wa()|0;Sm(n);Sm(b);xn(j);break}Sm(n);x=0;f=va(28,p|0,49029,57)|0;n=x;x=0;if(!(n&1)?(x=0,Aa(36,f|0,0)|0,n=x,x=0,!(n&1)):0){h=Va(16)|0;x=0;ra(64,o|0,j|0);n=x;x=0;if(!(n&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,o|0);n=x;x=0;if(n&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(o);if(!g){o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}}else f=Wa()|0;Ua(h|0);o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}o=Wa()|0;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}while(0);p=f;qn(c);fb(p|0)}function kf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0;j=a+4|0;a=k[j>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){g=i[b+(a*3|0)+1>>0]|0;f=g&255;h=f+128+(l[b+(a*3|0)+2>>0]|0)&255;e=c+(a*3|0)|0;i[e>>0]=(l[b+(a*3|0)>>0]|0)+128+f;i[e+1>>0]=g;i[e+2>>0]=h;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=i[b+(g+e)>>0]|0;o=n&255;m=o+128+(l[b+(g+f)>>0]|0)&255;h=c+(g*3|0)|0;i[h>>0]=(l[b+g>>0]|0)+128+o;i[h+1>>0]=n;i[h+2>>0]=m;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{n=l[b+(g+e)>>0]|0;o=c+(g<<2)|0;n=(l[b+g>>0]|0)+128+n&255|n<<8|l[b+(g+f)>>0]<<24|n+128+(l[b+(g+a)>>0]|0)<<16&16711680;i[o>>0]=n;i[o+1>>0]=n>>8;i[o+2>>0]=n>>16;i[o+3>>0]=n>>24;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[j>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)>0){a=c;f=0}else return;while(1){o=a+2|0;n=i[a>>0]|0;i[a>>0]=i[o>>0]|0;i[o>>0]=n;f=f+1|0;if((f|0)==(d|0))break;else a=a+g|0}return}function lf(a){a=a|0;var b=0,c=0;k[a>>2]=36712;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=k[a+8>>2]|0;if(!c)return;b=a+12|0;if((k[b>>2]|0)!=(c|0))k[b>>2]=c;mj(c);return}function mf(a){a=a|0;var b=0,c=0;k[a>>2]=36712;b=k[a+20>>2]|0;if(b){c=a+24|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}b=k[a+8>>2]|0;if(!b){mj(a);return}c=a+12|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b);mj(a);return}function nf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+36|0;if(!(k[e>>2]|0)){e=a+40|0;rf(a,b,k[e>>2]|0,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}f=ia(k[(k[a+4>>2]|0)+16>>2]|0,c)|0;g=a+20|0;rf(a,b,k[g>>2]|0,c,d);a=k[e>>2]|0;if((Qb[k[(k[a>>2]|0)+48>>2]&63](a,k[g>>2]|0,f)|0)==(f|0))return;e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,3,35648);g=x;x=0;if(g&1){g=Wa()|0;Ua(e|0);fb(g|0)}else ub(e|0,824,96)}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=k[a+36>>2]|0;if(!e){e=a+40|0;pf(a,k[e>>2]|0,b,c,d);k[e>>2]=(k[e>>2]|0)+(k[(k[a+4>>2]|0)+12>>2]|0);return}else{qf(a,e,b,c,d);return}}function pf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;h=a+4|0;f=k[h>>2]|0;if(!(i[f+32>>0]|0))h=b;else{g=a+8|0;vw(k[g>>2]|0,b|0,d*3|0)|0;f=k[h>>2]|0;b=k[f+16>>2]|0;if((d|0)>0){f=k[g>>2]|0;a=0;while(1){j=f+2|0;l=i[f>>0]|0;i[f>>0]=i[j>>0]|0;i[j>>0]=l;a=a+1|0;if((a|0)==(d|0))break;else f=f+b|0}f=k[h>>2]|0}h=k[g>>2]|0}switch(k[f+16>>2]|0){case 3:{if((k[f+24>>2]|0)==2){if((d|0)>0)f=0;else return;do{e=i[h+(f*3|0)+1>>0]|0;j=i[h+(f*3|0)+2>>0]|0;l=c+(f*3|0)|0;i[l>>0]=i[h+(f*3|0)>>0]|0;i[l+1>>0]=e;i[l+2>>0]=j;f=f+1|0}while((f|0)!=(d|0));return}f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=0;do{j=i[h+(b*3|0)+1>>0]|0;l=i[h+(b*3|0)+2>>0]|0;i[c+b>>0]=i[h+(b*3|0)>>0]|0;i[c+(b+e)>>0]=j;i[c+(b+a)>>0]=l;b=b+1|0}while((b|0)!=(f|0));return}case 4:{if((k[f+24>>2]|0)!=1)return;f=(e|0)<(d|0)?e:d;if((f|0)<=0)return;a=e<<1;b=e*3|0;g=0;do{d=i[h+(g<<2)+1>>0]|0;j=i[h+(g<<2)+2>>0]|0;l=i[h+(g<<2)+3>>0]|0;i[c+g>>0]=i[h+(g<<2)>>0]|0;i[c+(g+e)>>0]=d;i[c+(g+a)>>0]=j;i[c+(g+b)>>0]=l;g=g+1|0}while((g|0)!=(f|0));return}default:return}}function qf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+176|0;n=m+152|0;p=m+16|0;o=m;g=ia(k[(k[a+4>>2]|0)+16>>2]|0,d)|0;j=a+20|0;f=k[j>>2]|0;if(!g){p=f;pf(a,p,c,d,e);r=m;return}while(1){h=Qb[k[(k[b>>2]|0)+32>>2]&63](b,f,g)|0;if(!h)break;f=k[j>>2]|0;if((g|0)==(h|0)){l=26;break}else g=g-h|0}if((l|0)==26){pf(a,f,c,d,e);r=m;return}c=p+56|0;j=p+4|0;k[p>>2]=36160;k[c>>2]=36180;x=0;ra(62,p+56|0,j|0);m=x;x=0;if(m&1){p=Wa()|0;qn(c);fb(p|0)}k[p+128>>2]=0;k[p+132>>2]=-1;k[p>>2]=36200;k[p+56>>2]=36220;x=0;qa(180,j|0);m=x;x=0;do if(m&1)f=Wa()|0;else{k[j>>2]=36236;b=p+36|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[p+52>>2]=16;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;x=0;ra(63,j|0,n|0);m=x;x=0;if(m&1){f=Wa()|0;Sm(n);Sm(b);xn(j);break}Sm(n);x=0;f=va(28,p|0,49029,57)|0;n=x;x=0;if(!(n&1)?(x=0,Aa(36,f|0,0)|0,n=x,x=0,!(n&1)):0){h=Va(16)|0;x=0;ra(64,o|0,j|0);n=x;x=0;if(!(n&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,h|0,3,35648,o|0);n=x;x=0;if(n&1)g=1;else{x=0;Fa(6,h|0,824,96);x=0;g=0}f=Wa()|0;Sm(o);if(!g){o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}}else f=Wa()|0;Ua(h|0);o=f;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}o=Wa()|0;k[p>>2]=36200;k[c>>2]=36220;k[j>>2]=36236;Sm(b);xn(j);qn(c);fb(o|0)}while(0);p=f;qn(c);fb(p|0)}function rf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0;j=a+4|0;a=k[j>>2]|0;a:do switch(k[a+16>>2]|0){case 3:{if((k[a+24>>2]|0)==2){if((d|0)>0)a=0;else break a;while(1){g=i[b+(a*3|0)+1>>0]|0;h=i[b+(a*3|0)+2>>0]|0;e=c+(a*3|0)|0;i[e>>0]=i[b+(a*3|0)>>0]|0;i[e+1>>0]=g;i[e+2>>0]=h;a=a+1|0;if((a|0)==(d|0))break a}}a=(d|0)<(e|0)?d:e;if((a|0)>0){f=e<<1;g=0;do{n=i[b+(g+e)>>0]|0;m=i[b+(g+f)>>0]|0;h=c+(g*3|0)|0;i[h>>0]=i[b+g>>0]|0;i[h+1>>0]=n;i[h+2>>0]=m;g=g+1|0}while((g|0)!=(a|0))}break}case 4:{if((k[a+24>>2]|0)==1?(h=(d|0)<(e|0)?d:e,(h|0)>0):0){a=e<<1;f=e*3|0;g=0;do{n=c+(g<<2)|0;m=l[b+(g+e)>>0]<<8|l[b+g>>0]|l[b+(g+a)>>0]<<16|l[b+(g+f)>>0]<<24;i[n>>0]=m;i[n+1>>0]=m>>8;i[n+2>>0]=m>>16;i[n+3>>0]=m>>24;g=g+1|0}while((g|0)!=(h|0))}break}default:{}}while(0);a=k[j>>2]|0;if(!(i[a+32>>0]|0))return;g=k[a+16>>2]|0;if((d|0)>0){a=c;f=0}else return;while(1){n=a+2|0;m=i[a>>0]|0;i[a>>0]=i[n>>0]|0;i[n>>0]=m;f=f+1|0;if((f|0)==(d|0))break;else a=a+g|0}return}function sf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;t=r;r=r+32|0;v=t+12|0;s=t;o=a+180|0;p=(k[o>>2]|0)+4|0;if((k[a+32>>2]|0)==1)q=k[a+24>>2]|0;else q=1;b=ia(q<<1,p)|0;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;a:do if(b){if(!(b>>>0>1431655765?(x=0,qa(178,v|0),u=x,x=0,u&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b*3|0)|0,u=x,x=0,!(u&1)):0){k[w>>2]=c;k[v>>2]=c;k[v+8>>2]=c+(b*3|0);while(1){i[c>>0]=0;i[c+1>>0]=0;i[c+2>>0]=0;c=(k[w>>2]|0)+3|0;k[w>>2]=c;b=b+-1|0;if(!b)break a}}d=Wa()|0;b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}while(0);k[s>>2]=0;u=s+4|0;k[u>>2]=0;k[s+8>>2]=0;do if(!q)f=19;else{if(!(q>>>0>1073741823?(x=0,qa(178,s|0),n=x,x=0,n&1):0))f=17;if((f|0)==17?(d=q<<2,x=0,e=ta(67,d|0)|0,n=x,x=0,!(n&1)):0){k[s>>2]=e;f=e+(q<<2)|0;k[s+8>>2]=f;sw(e|0,0,d|0)|0;k[u>>2]=f;f=19;break}d=Wa()|0;b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){e=a+12|0;b:do if((k[e>>2]|0)>0){f=a+4604|0;g=(ia(q,p)|0)+1|0;h=a+4608|0;j=a+92|0;l=(q|0)>0;m=a+4600|0;n=0;c:while(1){d=k[v>>2]|0;b=d+3|0;k[f>>2]=b;c=d+(g*3|0)|0;k[h>>2]=c;if(!(n&1))b=g;else{k[f>>2]=c;k[h>>2]=b;b=1}c=k[j>>2]|0;x=0;Ja(k[(k[c>>2]|0)+12>>2]|0,c|0,d+(b*3|0)|0,k[o>>2]|0,p|0);d=x;x=0;if(d&1){f=29;break}if(l){b=k[s>>2]|0;c=k[f>>2]|0;d=0;do{k[m>>2]=k[b+(d<<2)>>2];y=k[o>>2]|0;b=c+(y*3|0)|0;c=c+((y+-1|0)*3|0)|0;i[b>>0]=i[c>>0]|0;i[b+1>>0]=i[c+1>>0]|0;i[b+2>>0]=i[c+2>>0]|0;b=k[f>>2]|0;c=(k[h>>2]|0)+-3|0;i[c>>0]=i[b>>0]|0;i[c+1>>0]=i[b+1>>0]|0;i[c+2>>0]=i[b+2>>0]|0;x=0;ra(70,a|0,0);c=x;x=0;if(c&1){f=28;break c}b=k[s>>2]|0;k[b+(d<<2)>>2]=k[m>>2];c=(k[f>>2]|0)+(p*3|0)|0;k[f>>2]=c;k[h>>2]=(k[h>>2]|0)+(p*3|0);d=d+1|0}while((d|0)<(q|0))}n=n+1|0;if((n|0)>=(k[e>>2]|0)){f=41;break b}}if((f|0)==28){d=Wa()|0;break}else if((f|0)==29){d=Wa()|0;break}}else f=41;while(0);do if((f|0)==41){x=0;qa(182,a|0);y=x;x=0;if(y&1){d=Wa()|0;break}b=k[s>>2]|0;c=b;if(b){d=k[u>>2]|0;if((d|0)!=(b|0))k[u>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[v>>2]|0;if(!b){r=t;return}c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);r=t;return}while(0);b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}function tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=a+180|0;if((k[A>>2]|0)<=0)return;B=a+4608|0;C=a+4604|0;D=a+4612|0;z=0;while(1){w=z+-1|0;f=k[B>>2]|0;g=k[C>>2]|0;b=z+1|0;e=l[g+(z*3|0)>>0]|0;y=k[D>>2]|0;h=l[g+(w*3|0)>>0]|0;j=e-h|0;m=l[f+(w*3|0)>>0]|0;n=h-m|0;o=((((i[y+((l[g+(b*3|0)>>0]|0)-e)>>0]|0)*9|0)+(i[y+j>>0]|0)|0)*9|0)+(i[y+n>>0]|0)|0;d=l[g+(z*3|0)+1>>0]|0;p=l[g+(w*3|0)+1>>0]|0;q=d-p|0;r=l[f+(w*3|0)+1>>0]|0;s=p-r|0;t=((((i[y+((l[g+(b*3|0)+1>>0]|0)-d)>>0]|0)*9|0)+(i[y+q>>0]|0)|0)*9|0)+(i[y+s>>0]|0)|0;c=l[g+(z*3|0)+2>>0]|0;u=l[g+(w*3|0)+2>>0]|0;v=c-u|0;w=l[f+(w*3|0)+2>>0]|0;x=u-w|0;y=((((i[y+((l[g+(b*3|0)+2>>0]|0)-c)>>0]|0)*9|0)+(i[y+v>>0]|0)|0)*9|0)+(i[y+x>>0]|0)|0;if(!(t|o|y))b=(uf(a,z,0)|0)+z|0;else{g=l[f+(z*3|0)>>0]|0;f=e-m>>31;if((f^n|0)>=0)if((f^j|0)<0)e=m;else e=m-h+e|0;g=vf(a,o,g,e,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+1>>0]|0;e=d-r>>31;if((e^s|0)>=0)if((e^q|0)<0)d=r;else d=r-p+d|0;e=vf(a,t,f,d,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+2>>0]|0;d=c-w>>31;if((d^x|0)>=0)if((d^v|0)<0)c=w;else c=w-u+c|0;y=vf(a,y,f,c,0)|0;z=(k[B>>2]|0)+(z*3|0)|0;i[z>>0]=g;i[z+1>>0]=e;i[z+2>>0]=y}if((b|0)<(k[A>>2]|0))z=b;else break}return}function uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=r;r=r+32|0;A=B+15|0;p=B+12|0;o=B+9|0;q=B+6|0;w=B+3|0;x=B;y=(k[a+180>>2]|0)-b|0;z=k[a+4608>>2]|0;s=k[a+4604>>2]|0;v=z+((b+-1|0)*3|0)|0;t=i[v>>0]|0;u=i[v+1>>0]|0;v=i[v+2>>0]|0;c=t&255;d=a+144|0;e=u&255;f=v&255;n=0;while(1){g=z+((n+b|0)*3|0)|0;h=g+1|0;j=g+2|0;C=(l[g>>0]|0)-c|0;m=k[d>>2]|0;if((((C|0)>-1?C:0-C|0)|0)>(m|0))break;C=(l[h>>0]|0)-e|0;if((((C|0)>-1?C:0-C|0)|0)>(m|0))break;C=(l[j>>0]|0)-f|0;if((((C|0)>-1?C:0-C|0)|0)>(m|0))break;i[g>>0]=t;i[h>>0]=u;i[j>>0]=v;n=n+1|0;if((n|0)==(y|0)){n=y;break}}e=(n|0)==(y|0);f=a+4600|0;d=k[36476+(k[f>>2]<<2)>>2]|0;if((1<(n|0))c=n;else{c=n;do{ke(a,1,1);d=k[f>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[f>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>0]=i[C>>0]|0;i[w+1>>0]=i[C+1>>0]|0;i[w+2>>0]=i[C+2>>0]|0;i[x>>0]=t;i[x+1>>0]=u;i[x+2>>0]=v;b=s+(b*3|0)|0;i[o>>0]=i[w>>0]|0;i[o+1>>0]=i[w+1>>0]|0;i[o+2>>0]=i[w+2>>0]|0;i[p>>0]=i[x>>0]|0;i[p+1>>0]=i[x+1>>0]|0;i[p+2>>0]=i[x+2>>0]|0;i[A>>0]=i[b>>0]|0;i[A+1>>0]=i[b+1>>0]|0;i[A+2>>0]=i[b+2>>0]|0;xf(q,a,o,p,A);i[C>>0]=i[q>>0]|0;i[C+1>>0]=i[q+1>>0]|0;i[C+2>>0]=i[q+2>>0]|0;C=k[f>>2]|0;k[f>>2]=(C|0)<1?0:C+-1|0;C=n+1|0;r=B;return C|0}if(!c){C=y;r=B;return C|0}ke(a,1,1);C=y;r=B;return C|0}function vf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;f=(r^b)-r|0;p=a+196+(f*12|0)+10|0;g=j[p>>1]|0;o=a+196+(f*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){b=5;while(1)if((g<>1]^r)-r+d|0;q=a+136|0;d=k[q>>2]|0;if((e&d|0)==(e|0))l=e;else l=d&~(e>>31);e=(c-l^r)-r|0;i=a+144|0;d=k[i>>2]|0;if((e|0)>0)e=(e+d|0)/(d<<1|1|0)|0;else e=(e-d|0)/(d<<1|1|0)|0;n=a+140|0;h=k[n>>2]|0;c=((e|0)<0?h:0)+e|0;h=c-((c|0)<((h+1|0)/2|0|0)?0:h)|0;f=a+196+(f*12|0)+4|0;if(!(d|b))e=(k[f>>2]<<1)+-1+g>>31;else e=0;d=e^h;wf(a,b,d>>30^d<<1,k[a+156>>2]|0);d=k[a+160>>2]|0;b=(k[o>>2]|0)+((h|0)>-1?h:0-h|0)|0;e=(k[f>>2]|0)+(ia(k[i>>2]<<1|1,h)|0)|0;c=j[p>>1]|0;if((c|0)==(d|0)){b=b>>1;e=e>>1;c=d>>1}k[o>>2]=b;d=c+1|0;j[p>>1]=d;b=d+e|0;if((b|0)>=1){if((e|0)>0){e=e-d|0;p=j[m>>1]|0;j[m>>1]=(p<<16>>16<127&1)+(p&65535);e=(e|0)>0?0:e}}else{e=j[m>>1]|0;j[m>>1]=(e&65535)-(e<<16>>16>-128&1);e=(b|0)>(~c|0)?b:0-c|0}k[f>>2]=e;d=k[i>>2]|0;c=d<<1|1;b=(ia(c,(h^r)-r|0)|0)+l|0;if((b|0)>=(0-d|0)){e=k[q>>2]|0;if((e+d|0)<(b|0))b=b-(ia(k[n>>2]|0,c)|0)|0}else{b=(ia(k[n>>2]|0,c)|0)+b|0;e=k[q>>2]|0}if((b&e|0)==(b|0)){r=b;r=r&255;return r|0}r=e&~(b>>31);r=r&255;return r|0}function wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=c>>b;f=a+148|0;g=d-(k[f>>2]|0)|0;if((e|0)<(g+-1|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-31-(k[f>>2]|0)|0)}else ke(a,1,g);b=k[f>>2]|0;ke(a,(1<>0]|0;p=o-(l[d>>0]|0)>>31|1;f=ia(p,(l[c>>0]|0)-o|0)|0;m=b+144|0;g=k[m>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;w=b+140|0;j=k[w>>2]|0;h=((f|0)<0?j:0)+f|0;j=h-((h|0)<((j+1|0)/2|0|0)?0:j)|0;h=b+4576|0;yf(b,h,j);t=l[e+1>>0]|0;u=t-(l[d+1>>0]|0)>>31|1;f=ia(u,(l[c+1>>0]|0)-t|0)|0;g=k[m>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;q=k[w>>2]|0;v=((f|0)<0?q:0)+f|0;q=v-((v|0)<((q+1|0)/2|0|0)?0:q)|0;yf(b,h,q);v=l[e+2>>0]|0;s=v-(l[d+2>>0]|0)>>31|1;f=ia(s,(l[c+2>>0]|0)-v|0)|0;g=k[m>>2]|0;if((f|0)>0)f=(f+g|0)/(g<<1|1|0)|0;else f=(f-g|0)/(g<<1|1|0)|0;n=k[w>>2]|0;f=((f|0)<0?n:0)+f|0;n=f-((f|0)<((n+1|0)/2|0|0)?0:n)|0;yf(b,h,n);h=k[m>>2]|0;m=h<<1|1;f=(ia(ia(m,j)|0,p)|0)+o|0;c=0-h|0;if((f|0)>=(c|0)){g=k[r>>2]|0;if((g+h|0)<(f|0)){f=f-(ia(k[w>>2]|0,m)|0)|0;d=g}else d=g}else{f=(ia(k[w>>2]|0,m)|0)+f|0;d=k[r>>2]|0}if((f&d|0)!=(f|0))f=d&~(f>>31);e=f&255;f=(ia(ia(m,q)|0,u)|0)+t|0;if((f|0)>=(c|0)){if((d+h|0)<(f|0))f=f-(ia(k[w>>2]|0,m)|0)|0}else f=(ia(k[w>>2]|0,m)|0)+f|0;if((f&d|0)!=(f|0))f=d&~(f>>31);g=f&255;f=(ia(ia(m,n)|0,s)|0)+v|0;if((f|0)>=(c|0)){if((d+h|0)<(f|0))f=f-(ia(k[w>>2]|0,m)|0)|0}else f=(ia(k[w>>2]|0,m)|0)+f|0;if((f&d|0)==(f|0)){w=f;w=w&255;i[a>>0]=e;v=a+1|0;i[v>>0]=g;a=a+2|0;i[a>>0]=w;return}w=d&~(f>>31);w=w&255;i[a>>0]=e;v=a+1|0;i[v>>0]=g;a=a+2|0;i[a>>0]=w;return}function yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;wf(a,e,d,(k[a+156>>2]|0)+-1-(k[36476+(k[a+4600>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function zf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+144|0;a:do if(!(k[n>>2]|0)){c=k[a+136>>2]|0;b=a+152|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+184>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+188>>2]|0):0)?(k[d+12>>2]|0)==(k[a+192>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4612>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4612>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4612>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4612>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+152|0;while(0);m=1<>2];c=a+4616|0;d=m<<1;e=a+4620|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4612|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+192|0;j=a+188|0;g=a+184|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function Af(a){a=a|0;var b=0,c=0;k[a>>2]=35996;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Bf(a){a=a|0;var b=0,c=0;k[a>>2]=35996;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,65535,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+160>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+164>>2]=f;k[a+168>>2]=d;Lf(a);d=0;do{k[a+172+(d*12|0)>>2]=1024;k[a+172+(d*12|0)+4>>2]=0;j[a+172+(d*12|0)+8>>1]=0;j[a+172+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4552>>2]=1024;k[a+4556>>2]=0;i[a+4560>>0]=h;i[a+4561>>0]=1;i[a+4562>>0]=0;k[a+4564>>2]=1024;k[a+4568>>2]=1;i[a+4572>>0]=h;i[a+4573>>0]=1;i[a+4574>>0]=0;k[a+4576>>2]=0;r=e;return}function Df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4600)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35772;e=b+132|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+148>>2]=k[d>>2];k[b+152>>2]=0;k[b+156>>2]=0;k[b+160>>2]=0;e=b+4544|0;d=b+164|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4556|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4568|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];Ff(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;Ff(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function Ef(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Ff(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;u=r;r=r+32|0;w=u+12|0;t=u;p=a+156|0;q=(k[p>>2]|0)+4|0;if((k[a+32>>2]|0)==1)s=k[a+24>>2]|0;else s=1;b=ia(s<<1,q)|0;k[w>>2]=0;y=w+4|0;k[y>>2]=0;k[w+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,w|0),v=x,x=0,v&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,v=x,x=0,!(v&1)):0){k[w>>2]=d;v=d+(b<<1)|0;k[w+8>>2]=v;sw(d|0,0,c|0)|0;k[y>>2]=v;break}d=Wa()|0;b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[t>>2]=0;v=t+4|0;k[v>>2]=0;k[t+8>>2]=0;do if(!s)g=18;else{if(!(s>>>0>1073741823?(x=0,qa(178,t|0),o=x,x=0,o&1):0))g=16;if((g|0)==16?(e=s<<2,x=0,f=ta(67,e|0)|0,o=x,x=0,!(o&1)):0){k[t>>2]=f;g=f+(s<<2)|0;k[t+8>>2]=g;sw(f|0,0,e|0)|0;k[v>>2]=g;g=18;break}d=Wa()|0;b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+12|0;a:do if((k[f>>2]|0)>0){g=a+4580|0;h=(ia(s,q)|0)+1|0;i=a+4584|0;l=a+92|0;m=(s|0)>0;n=a+4576|0;o=0;b:while(1){c=k[w>>2]|0;b=c+2|0;k[g>>2]=b;c=c+(h<<1)|0;k[i>>2]=c;if(!(o&1))b=c;else{k[g>>2]=c;k[i>>2]=b}e=k[l>>2]|0;x=0;Ja(k[(k[e>>2]|0)+12>>2]|0,e|0,b|0,k[p>>2]|0,q|0);e=x;x=0;if(e&1){g=28;break}if(m){b=k[g>>2]|0;c=k[i>>2]|0;d=k[t>>2]|0;e=0;do{k[n>>2]=k[d+(e<<2)>>2];d=k[p>>2]|0;j[b+(d<<1)>>1]=j[b+(d+-1<<1)>>1]|0;j[c+-2>>1]=j[b>>1]|0;x=0;ra(71,a|0,0);d=x;x=0;if(d&1){g=27;break b}d=k[t>>2]|0;k[d+(e<<2)>>2]=k[n>>2];b=(k[g>>2]|0)+(q<<1)|0;k[g>>2]=b;c=(k[i>>2]|0)+(q<<1)|0;k[i>>2]=c;e=e+1|0}while((e|0)<(s|0))}o=o+1|0;if((o|0)>=(k[f>>2]|0)){g=40;break a}}if((g|0)==27){d=Wa()|0;break}else if((g|0)==28){d=Wa()|0;break}}else g=40;while(0);do if((g|0)==40){x=0;qa(182,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[t>>2]|0;c=b;if(b){d=k[v>>2]|0;if((d|0)!=(b|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[w>>2]|0;if(!b){r=u;return}c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=u;return}while(0);b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function Gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+4580|0;b=k[p>>2]|0;s=a+156|0;if((k[s>>2]|0)<=0)return;q=a+4584|0;r=a+4588|0;e=b;f=m[b+-2>>1]|0;b=m[b>>1]|0;o=0;while(1){n=k[q>>2]|0;l=m[n+(o+-1<<1)>>1]|0;d=o+1|0;c=m[e+(d<<1)>>1]|0;h=k[r>>2]|0;g=b-f|0;e=f-l|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(If(a,o,0)|0)+o|0;c=k[p>>2]|0;b=m[c+(d+-1<<1)>>1]|0;c=m[c+(d<<1)>>1]|0}else{f=b-l>>31;if((f^e|0)<0)e=b;else e=l+((f^g|0)<0?0:g)|0;n=Hf(a,h,m[n+(o<<1)>>1]|0,e,0)|0;j[(k[q>>2]|0)+(o<<1)>>1]=n}if((d|0)>=(k[s>>2]|0))break;e=k[p>>2]|0;f=b;b=c;o=d}return}function Hf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;i=(q^b)-q|0;p=a+172+(i*12|0)+10|0;g=j[p>>1]|0;o=a+172+(i*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){f=5;while(1)if((g<>1]^q)-q+d|0;if((e&65535|0)==(e|0))m=e;else m=e>>31&65535^65535;h=(c-m^q)-q<<16;l=h>>16;if(!f)e=(k[a+172+(i*12|0)+4>>2]<<1)+-1+g>>31;else e=0;d=e^l;d=d>>30^d<<1;e=d>>f;if((e|0)<47){if((e|0)>30){g=(e|0)/2|0;ke(a,0,g);e=e-g|0}ke(a,1,e+1|0);ke(a,d&(1<>1]|0;e=g<<16>>16==64;f=e&1;c=(k[d>>2]|0)+l>>f;g=e?32:g<<16>>16;k[o>>2]=(k[o>>2]|0)+((h|0)>-65536?l:0-l|0)>>f;f=g+1|0;j[p>>1]=f;e=f+c|0;if((e|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(e|0)>(~g|0)?e:0-g|0;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&65535;return b|0}if((c|0)<=0){p=c;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&65535;return b|0}p=c-f|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&65535;return b|0}function If(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0;g=(k[a+156>>2]|0)-b|0;h=k[a+4584>>2]|0;l=k[a+4580>>2]|0;e=j[h+(b+-1<<1)>>1]|0;d=0;while(1){c=h+(d+b<<1)|0;if((j[c>>1]|0)!=e<<16>>16){n=d;break}j[c>>1]=e;d=d+1|0;if((d|0)==(g|0)){n=g;break}}f=e&65535;e=(n|0)==(g|0);i=a+4576|0;d=k[36476+(k[i>>2]<<2)>>2]|0;if((1<(n|0))c=n;else{c=n;do{ke(a,1,1);d=k[i>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[i>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>1]|0;c=m[l+(c<<1)>>1]|0;l=f-c|0;if((((l|0)>-1?l:0-l|0)|0)<1){c=d-f<<16>>16;Jf(a,a+4564|0,c);c=c+f|0}else{l=c-f>>31|1;b=(ia(d-c<<16,l)|0)>>16;Jf(a,a+4552|0,b);c=(ia(b,l)|0)+c|0}j[e>>1]=c;a=k[i>>2]|0;k[i>>2]=(a|0)<1?0:a+-1|0;a=n+1|0;return a|0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;Kf(a,e,d,63-(k[36476+(k[a+4576>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function Kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c>>b;f=d+-16|0;if((e|0)<(d+-17|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-47|0)}else ke(a,1,f);ke(a,c+65535&65535,16);return}function Lf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,65535,0);j=a+160|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+164>>2]|0):0)?(k[h+12>>2]|0)==(k[a+168>>2]|0):0){j=k[8909]|0;k[a+4588>>2]=j+(((k[8910]|0)-j|0)>>>1);r=l;return}c=a+4592|0;d=a+4596|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=131072){if(f>>>0>131072?(g=b+131072|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,131072-f|0);b=k[c>>2]|0}h=a+4588|0;k[h>>2]=b+65536;g=a+168|0;e=a+164|0;f=-65536;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==65536)break}r=l;return}function Mf(a){a=a|0;var b=0,c=0;k[a>>2]=35968;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Nf(a){a=a|0;var b=0,c=0;k[a>>2]=35968;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,4095,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+160>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+164>>2]=f;k[a+168>>2]=d;Xf(a);d=0;do{k[a+172+(d*12|0)>>2]=64;k[a+172+(d*12|0)+4>>2]=0;j[a+172+(d*12|0)+8>>1]=0;j[a+172+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4552>>2]=64;k[a+4556>>2]=0;i[a+4560>>0]=h;i[a+4561>>0]=1;i[a+4562>>0]=0;k[a+4564>>2]=64;k[a+4568>>2]=1;i[a+4572>>0]=h;i[a+4573>>0]=1;i[a+4574>>0]=0;k[a+4576>>2]=0;r=e;return}function Pf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4600)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35744;e=b+132|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+148>>2]=k[d>>2];k[b+152>>2]=0;k[b+156>>2]=0;k[b+160>>2]=0;e=b+4544|0;d=b+164|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4556|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4568|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];Rf(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;Rf(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function Qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Rf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;u=r;r=r+32|0;w=u+12|0;t=u;p=a+156|0;q=(k[p>>2]|0)+4|0;if((k[a+32>>2]|0)==1)s=k[a+24>>2]|0;else s=1;b=ia(s<<1,q)|0;k[w>>2]=0;y=w+4|0;k[y>>2]=0;k[w+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,w|0),v=x,x=0,v&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,v=x,x=0,!(v&1)):0){k[w>>2]=d;v=d+(b<<1)|0;k[w+8>>2]=v;sw(d|0,0,c|0)|0;k[y>>2]=v;break}d=Wa()|0;b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[t>>2]=0;v=t+4|0;k[v>>2]=0;k[t+8>>2]=0;do if(!s)g=18;else{if(!(s>>>0>1073741823?(x=0,qa(178,t|0),o=x,x=0,o&1):0))g=16;if((g|0)==16?(e=s<<2,x=0,f=ta(67,e|0)|0,o=x,x=0,!(o&1)):0){k[t>>2]=f;g=f+(s<<2)|0;k[t+8>>2]=g;sw(f|0,0,e|0)|0;k[v>>2]=g;g=18;break}d=Wa()|0;b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+12|0;a:do if((k[f>>2]|0)>0){g=a+4580|0;h=(ia(s,q)|0)+1|0;i=a+4584|0;l=a+92|0;m=(s|0)>0;n=a+4576|0;o=0;b:while(1){c=k[w>>2]|0;b=c+2|0;k[g>>2]=b;c=c+(h<<1)|0;k[i>>2]=c;if(!(o&1))b=c;else{k[g>>2]=c;k[i>>2]=b}e=k[l>>2]|0;x=0;Ja(k[(k[e>>2]|0)+12>>2]|0,e|0,b|0,k[p>>2]|0,q|0);e=x;x=0;if(e&1){g=28;break}if(m){b=k[g>>2]|0;c=k[i>>2]|0;d=k[t>>2]|0;e=0;do{k[n>>2]=k[d+(e<<2)>>2];d=k[p>>2]|0;j[b+(d<<1)>>1]=j[b+(d+-1<<1)>>1]|0;j[c+-2>>1]=j[b>>1]|0;x=0;ra(72,a|0,0);d=x;x=0;if(d&1){g=27;break b}d=k[t>>2]|0;k[d+(e<<2)>>2]=k[n>>2];b=(k[g>>2]|0)+(q<<1)|0;k[g>>2]=b;c=(k[i>>2]|0)+(q<<1)|0;k[i>>2]=c;e=e+1|0}while((e|0)<(s|0))}o=o+1|0;if((o|0)>=(k[f>>2]|0)){g=40;break a}}if((g|0)==27){d=Wa()|0;break}else if((g|0)==28){d=Wa()|0;break}}else g=40;while(0);do if((g|0)==40){x=0;qa(182,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[t>>2]|0;c=b;if(b){d=k[v>>2]|0;if((d|0)!=(b|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[w>>2]|0;if(!b){r=u;return}c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=u;return}while(0);b=k[t>>2]|0;c=b;if(b){e=k[v>>2]|0;if((e|0)!=(b|0))k[v>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[w>>2]|0;if(!b)fb(d|0);c=k[y>>2]|0;if((c|0)!=(b|0))k[y>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function Sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+4580|0;b=k[p>>2]|0;s=a+156|0;if((k[s>>2]|0)<=0)return;q=a+4584|0;r=a+4588|0;e=b;f=m[b+-2>>1]|0;b=m[b>>1]|0;o=0;while(1){n=k[q>>2]|0;l=m[n+(o+-1<<1)>>1]|0;d=o+1|0;c=m[e+(d<<1)>>1]|0;h=k[r>>2]|0;g=b-f|0;e=f-l|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(Uf(a,o,0)|0)+o|0;c=k[p>>2]|0;b=m[c+(d+-1<<1)>>1]|0;c=m[c+(d<<1)>>1]|0}else{f=b-l>>31;if((f^e|0)<0)e=b;else e=l+((f^g|0)<0?0:g)|0;n=Tf(a,h,m[n+(o<<1)>>1]|0,e,0)|0;j[(k[q>>2]|0)+(o<<1)>>1]=n}if((d|0)>=(k[s>>2]|0))break;e=k[p>>2]|0;f=b;b=c;o=d}return}function Tf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;i=(q^b)-q|0;p=a+172+(i*12|0)+10|0;g=j[p>>1]|0;o=a+172+(i*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){f=5;while(1)if((g<>1]^q)-q+d|0;if((e&4095|0)==(e|0))m=e;else m=e>>31&4095^4095;h=(c-m^q)-q<<20;l=h>>20;if(!f)e=(k[a+172+(i*12|0)+4>>2]<<1)+-1+g>>31;else e=0;d=e^l;d=d>>30^d<<1;e=d>>f;if((e|0)<35){if((e|0)>30){g=(e|0)/2|0;ke(a,0,g);e=e-g|0}ke(a,1,e+1|0);ke(a,d&(1<>1]|0;e=g<<16>>16==64;f=e&1;c=(k[d>>2]|0)+l>>f;g=e?32:g<<16>>16;k[o>>2]=(k[o>>2]|0)+((h|0)>-1048576?l:0-l|0)>>f;f=g+1|0;j[p>>1]=f;e=f+c|0;if((e|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(e|0)>(~g|0)?e:0-g|0;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}if((c|0)<=0){p=c;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}p=c-f|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0;g=(k[a+156>>2]|0)-b|0;h=k[a+4584>>2]|0;l=k[a+4580>>2]|0;e=j[h+(b+-1<<1)>>1]|0;d=0;while(1){c=h+(d+b<<1)|0;if((j[c>>1]|0)!=e<<16>>16){n=d;break}j[c>>1]=e;d=d+1|0;if((d|0)==(g|0)){n=g;break}}f=e&65535;e=(n|0)==(g|0);i=a+4576|0;d=k[36476+(k[i>>2]<<2)>>2]|0;if((1<(n|0))c=n;else{c=n;do{ke(a,1,1);d=k[i>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[i>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>1]|0;c=m[l+(c<<1)>>1]|0;l=f-c|0;if((((l|0)>-1?l:0-l|0)|0)<1){c=d-f<<20>>20;Vf(a,a+4564|0,c);c=c+f|0}else{l=c-f>>31|1;b=(ia(d-c<<20,l)|0)>>20;Vf(a,a+4552|0,b);c=(ia(b,l)|0)+c|0}j[e>>1]=c&4095;a=k[i>>2]|0;k[i>>2]=(a|0)<1?0:a+-1|0;a=n+1|0;return a|0}function Vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;Wf(a,e,d,47-(k[36476+(k[a+4576>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function Wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c>>b;f=d+-12|0;if((e|0)<(d+-13|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-43|0)}else ke(a,1,f);ke(a,c+4095&4095,12);return}function Xf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,4095,0);j=a+160|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+164>>2]|0):0)?(k[h+12>>2]|0)==(k[a+168>>2]|0):0){j=k[8906]|0;k[a+4588>>2]=j+(((k[8907]|0)-j|0)>>>1);r=l;return}c=a+4592|0;d=a+4596|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=8192){if(f>>>0>8192?(g=b+8192|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,8192-f|0);b=k[c>>2]|0}h=a+4588|0;k[h>>2]=b+4096;g=a+168|0;e=a+164|0;f=-4096;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==4096)break}r=l;return}function Yf(a){a=a|0;var b=0,c=0;k[a>>2]=35940;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Zf(a){a=a|0;var b=0,c=0;k[a>>2]=35940;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,255,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+160>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+164>>2]=f;k[a+168>>2]=d;hg(a);d=0;do{k[a+172+(d*12|0)>>2]=4;k[a+172+(d*12|0)+4>>2]=0;j[a+172+(d*12|0)+8>>1]=0;j[a+172+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4552>>2]=4;k[a+4556>>2]=0;i[a+4560>>0]=h;i[a+4561>>0]=1;i[a+4562>>0]=0;k[a+4564>>2]=4;k[a+4568>>2]=1;i[a+4572>>0]=h;i[a+4573>>0]=1;i[a+4574>>0]=0;k[a+4576>>2]=0;r=e;return}function $f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4600)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35716;e=b+132|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+148>>2]=k[d>>2];k[b+152>>2]=0;k[b+156>>2]=0;k[b+160>>2]=0;e=b+4544|0;d=b+164|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4556|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4568|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];bg(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;bg(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function bg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;t=r;r=r+32|0;v=t+12|0;s=t;o=a+156|0;p=(k[o>>2]|0)+4|0;if((k[a+32>>2]|0)==1)q=k[a+24>>2]|0;else q=1;b=ia(q<<1,p)|0;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;a:do if(b){if(!((b|0)<0?(x=0,qa(178,v|0),u=x,x=0,u&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b|0)|0,u=x,x=0,!(u&1)):0){k[w>>2]=c;k[v>>2]=c;k[v+8>>2]=c+b;while(1){i[c>>0]=0;c=(k[w>>2]|0)+1|0;k[w>>2]=c;b=b+-1|0;if(!b)break a}}c=Wa()|0;b=k[v>>2]|0;if(!b)fb(c|0);if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);fb(c|0)}while(0);k[s>>2]=0;u=s+4|0;k[u>>2]=0;k[s+8>>2]=0;do if(!q)f=19;else{if(!(q>>>0>1073741823?(x=0,qa(178,s|0),n=x,x=0,n&1):0))f=17;if((f|0)==17?(d=q<<2,x=0,e=ta(67,d|0)|0,n=x,x=0,!(n&1)):0){k[s>>2]=e;f=e+(q<<2)|0;k[s+8>>2]=f;sw(e|0,0,d|0)|0;k[u>>2]=f;f=19;break}c=Wa()|0;b=k[s>>2]|0;d=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){e=a+12|0;b:do if((k[e>>2]|0)>0){f=a+4580|0;g=(ia(q,p)|0)+1|0;h=a+4584|0;j=a+92|0;l=(q|0)>0;m=a+4576|0;n=0;c:while(1){c=k[v>>2]|0;b=c+1|0;k[f>>2]=b;c=c+g|0;k[h>>2]=c;if(!(n&1))b=c;else{k[f>>2]=c;k[h>>2]=b}d=k[j>>2]|0;x=0;Ja(k[(k[d>>2]|0)+12>>2]|0,d|0,b|0,k[o>>2]|0,p|0);d=x;x=0;if(d&1){f=29;break}if(l){b=k[f>>2]|0;c=k[s>>2]|0;d=0;do{k[m>>2]=k[c+(d<<2)>>2];c=k[o>>2]|0;i[b+c>>0]=i[b+(c+-1)>>0]|0;i[(k[h>>2]|0)+-1>>0]=i[k[f>>2]>>0]|0;x=0;ra(73,a|0,0);c=x;x=0;if(c&1){f=28;break c}c=k[s>>2]|0;k[c+(d<<2)>>2]=k[m>>2];b=(k[f>>2]|0)+p|0;k[f>>2]=b;k[h>>2]=(k[h>>2]|0)+p;d=d+1|0}while((d|0)<(q|0))}n=n+1|0;if((n|0)>=(k[e>>2]|0)){f=41;break b}}if((f|0)==28){c=Wa()|0;break}else if((f|0)==29){c=Wa()|0;break}}else f=41;while(0);do if((f|0)==41){x=0;qa(182,a|0);a=x;x=0;if(a&1){c=Wa()|0;break}b=k[s>>2]|0;c=b;if(b){d=k[u>>2]|0;if((d|0)!=(b|0))k[u>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[v>>2]|0;if(!b){r=t;return}if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);r=t;return}while(0);b=k[s>>2]|0;d=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}b=k[v>>2]|0;if(!b)fb(c|0);if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);fb(c|0)}function cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+4580|0;b=k[o>>2]|0;r=a+156|0;if((k[r>>2]|0)<=0)return;p=a+4584|0;q=a+4588|0;e=b;f=l[b+-1>>0]|0;b=l[b>>0]|0;n=0;while(1){m=k[p>>2]|0;j=l[m+(n+-1)>>0]|0;d=n+1|0;c=l[e+d>>0]|0;h=k[q>>2]|0;g=b-f|0;e=f-j|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(eg(a,n,0)|0)+n|0;c=k[o>>2]|0;b=l[c+(d+-1)>>0]|0;c=l[c+d>>0]|0}else{f=b-j>>31;if((f^e|0)<0)e=b;else e=j+((f^g|0)<0?0:g)|0;m=dg(a,h,l[m+n>>0]|0,e,0)|0;i[(k[p>>2]|0)+n>>0]=m}if((d|0)>=(k[r>>2]|0))break;e=k[o>>2]|0;f=b;b=c;n=d}return}function dg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;i=(q^b)-q|0;p=a+172+(i*12|0)+10|0;g=j[p>>1]|0;o=a+172+(i*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){f=5;while(1)if((g<>1]^q)-q+d|0;if((e&255|0)==(e|0))m=e;else m=e>>31&255^255;h=(c-m^q)-q<<24;l=h>>24;if(!f)e=(k[a+172+(i*12|0)+4>>2]<<1)+-1+g>>31;else e=0;e=e^l;e=e>>30^e<<1;d=e>>f;if((d|0)<23){ke(a,1,d+1|0);ke(a,e&(1<>1]|0;e=g<<16>>16==64;f=e&1;c=(k[d>>2]|0)+l>>f;g=e?32:g<<16>>16;k[o>>2]=(k[o>>2]|0)+((h|0)>-16777216?l:0-l|0)>>f;f=g+1|0;j[p>>1]=f;e=f+c|0;if((e|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(e|0)>(~g|0)?e:0-g|0;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}if((c|0)<=0){p=c;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}p=c-f|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}function eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;g=(k[a+156>>2]|0)-b|0;h=k[a+4584>>2]|0;m=k[a+4580>>2]|0;e=i[h+(b+-1)>>0]|0;d=0;while(1){c=h+(d+b)|0;if((i[c>>0]|0)!=e<<24>>24){n=d;break}i[c>>0]=e;d=d+1|0;if((d|0)==(g|0)){n=g;break}}f=e&255;e=(n|0)==(g|0);j=a+4576|0;d=k[36476+(k[j>>2]<<2)>>2]|0;if((1<(n|0))c=n;else{c=n;do{ke(a,1,1);d=k[j>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[j>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>0]|0;c=l[m+c>>0]|0;m=f-c|0;if((((m|0)>-1?m:0-m|0)|0)<1){c=d-f<<24>>24;fg(a,a+4564|0,c);c=c+f|0}else{m=c-f>>31|1;b=(ia(d-c<<24,m)|0)>>24;fg(a,a+4552|0,b);c=(ia(b,m)|0)+c|0}i[e>>0]=c;a=k[j>>2]|0;k[j>>2]=(a|0)<1?0:a+-1|0;a=n+1|0;return a|0}function fg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;gg(a,e,d,31-(k[36476+(k[a+4576>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function gg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c>>b;f=d+-8|0;if((e|0)<(d+-9|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-39|0)}else ke(a,1,f);ke(a,c+255&255,8);return}function hg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,255,0);j=a+160|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+164>>2]|0):0)?(k[h+12>>2]|0)==(k[a+168>>2]|0):0){j=k[8900]|0;k[a+4588>>2]=j+(((k[8901]|0)-j|0)>>>1);r=l;return}c=a+4592|0;d=a+4596|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=512){if(f>>>0>512?(g=b+512|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,512-f|0);b=k[c>>2]|0}h=a+4588|0;k[h>>2]=b+256;g=a+168|0;e=a+164|0;f=-256;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==256)break}r=l;return}function ig(a){a=a|0;var b=0,c=0;k[a>>2]=35912;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function jg(a){a=a|0;var b=0,c=0;k[a>>2]=35912;b=k[a+4592>>2]|0;if(b){c=a+4596|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,255,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+160>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+164>>2]=f;k[a+168>>2]=d;tg(a);d=0;do{k[a+172+(d*12|0)>>2]=4;k[a+172+(d*12|0)+4>>2]=0;j[a+172+(d*12|0)+8>>1]=0;j[a+172+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4552>>2]=4;k[a+4556>>2]=0;i[a+4560>>0]=h;i[a+4561>>0]=1;i[a+4562>>0]=0;k[a+4564>>2]=4;k[a+4568>>2]=1;i[a+4572>>0]=h;i[a+4573>>0]=1;i[a+4574>>0]=0;k[a+4576>>2]=0;r=e;return}function lg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4600)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35688;e=b+132|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+148>>2]=k[d>>2];k[b+152>>2]=0;k[b+156>>2]=0;k[b+160>>2]=0;e=b+4544|0;d=b+164|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4556|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4568|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];ng(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;ng(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function ng(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;t=r;r=r+32|0;v=t+12|0;s=t;o=a+156|0;p=(k[o>>2]|0)+4|0;if((k[a+32>>2]|0)==1)q=k[a+24>>2]|0;else q=1;b=ia(q<<1,p)|0;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;a:do if(b){if(!(b>>>0>1431655765?(x=0,qa(178,v|0),u=x,x=0,u&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b*3|0)|0,u=x,x=0,!(u&1)):0){k[w>>2]=c;k[v>>2]=c;k[v+8>>2]=c+(b*3|0);while(1){i[c>>0]=0;i[c+1>>0]=0;i[c+2>>0]=0;c=(k[w>>2]|0)+3|0;k[w>>2]=c;b=b+-1|0;if(!b)break a}}d=Wa()|0;b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}while(0);k[s>>2]=0;u=s+4|0;k[u>>2]=0;k[s+8>>2]=0;do if(!q)f=19;else{if(!(q>>>0>1073741823?(x=0,qa(178,s|0),n=x,x=0,n&1):0))f=17;if((f|0)==17?(d=q<<2,x=0,e=ta(67,d|0)|0,n=x,x=0,!(n&1)):0){k[s>>2]=e;f=e+(q<<2)|0;k[s+8>>2]=f;sw(e|0,0,d|0)|0;k[u>>2]=f;f=19;break}d=Wa()|0;b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){e=a+12|0;b:do if((k[e>>2]|0)>0){f=a+4580|0;g=(ia(q,p)|0)+1|0;h=a+4584|0;j=a+92|0;l=(q|0)>0;m=a+4576|0;n=0;c:while(1){d=k[v>>2]|0;b=d+3|0;k[f>>2]=b;c=d+(g*3|0)|0;k[h>>2]=c;if(!(n&1))b=g;else{k[f>>2]=c;k[h>>2]=b;b=1}c=k[j>>2]|0;x=0;Ja(k[(k[c>>2]|0)+12>>2]|0,c|0,d+(b*3|0)|0,k[o>>2]|0,p|0);d=x;x=0;if(d&1){f=29;break}if(l){b=k[s>>2]|0;c=k[f>>2]|0;d=0;do{k[m>>2]=k[b+(d<<2)>>2];y=k[o>>2]|0;b=c+(y*3|0)|0;c=c+((y+-1|0)*3|0)|0;i[b>>0]=i[c>>0]|0;i[b+1>>0]=i[c+1>>0]|0;i[b+2>>0]=i[c+2>>0]|0;b=k[f>>2]|0;c=(k[h>>2]|0)+-3|0;i[c>>0]=i[b>>0]|0;i[c+1>>0]=i[b+1>>0]|0;i[c+2>>0]=i[b+2>>0]|0;x=0;ra(74,a|0,0);c=x;x=0;if(c&1){f=28;break c}b=k[s>>2]|0;k[b+(d<<2)>>2]=k[m>>2];c=(k[f>>2]|0)+(p*3|0)|0;k[f>>2]=c;k[h>>2]=(k[h>>2]|0)+(p*3|0);d=d+1|0}while((d|0)<(q|0))}n=n+1|0;if((n|0)>=(k[e>>2]|0)){f=41;break b}}if((f|0)==28){d=Wa()|0;break}else if((f|0)==29){d=Wa()|0;break}}else f=41;while(0);do if((f|0)==41){x=0;qa(182,a|0);y=x;x=0;if(y&1){d=Wa()|0;break}b=k[s>>2]|0;c=b;if(b){d=k[u>>2]|0;if((d|0)!=(b|0))k[u>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[v>>2]|0;if(!b){r=t;return}c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);r=t;return}while(0);b=k[s>>2]|0;c=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[v>>2]|0;if(!b)fb(d|0);c=k[w>>2]|0;if((c|0)!=(b|0))k[w>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}function og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=a+156|0;if((k[A>>2]|0)<=0)return;B=a+4584|0;C=a+4580|0;D=a+4588|0;z=0;while(1){w=z+-1|0;f=k[B>>2]|0;g=k[C>>2]|0;b=z+1|0;e=l[g+(z*3|0)>>0]|0;y=k[D>>2]|0;h=l[g+(w*3|0)>>0]|0;j=e-h|0;m=l[f+(w*3|0)>>0]|0;n=h-m|0;o=((((i[y+((l[g+(b*3|0)>>0]|0)-e)>>0]|0)*9|0)+(i[y+j>>0]|0)|0)*9|0)+(i[y+n>>0]|0)|0;d=l[g+(z*3|0)+1>>0]|0;p=l[g+(w*3|0)+1>>0]|0;q=d-p|0;r=l[f+(w*3|0)+1>>0]|0;s=p-r|0;t=((((i[y+((l[g+(b*3|0)+1>>0]|0)-d)>>0]|0)*9|0)+(i[y+q>>0]|0)|0)*9|0)+(i[y+s>>0]|0)|0;c=l[g+(z*3|0)+2>>0]|0;u=l[g+(w*3|0)+2>>0]|0;v=c-u|0;w=l[f+(w*3|0)+2>>0]|0;x=u-w|0;y=((((i[y+((l[g+(b*3|0)+2>>0]|0)-c)>>0]|0)*9|0)+(i[y+v>>0]|0)|0)*9|0)+(i[y+x>>0]|0)|0;if(!(t|o|y))b=(pg(a,z,0)|0)+z|0;else{g=l[f+(z*3|0)>>0]|0;f=e-m>>31;if((f^n|0)>=0)if((f^j|0)<0)e=m;else e=m-h+e|0;g=qg(a,o,g,e,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+1>>0]|0;e=d-r>>31;if((e^s|0)>=0)if((e^q|0)<0)d=r;else d=r-p+d|0;e=qg(a,t,f,d,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+2>>0]|0;d=c-w>>31;if((d^x|0)>=0)if((d^v|0)<0)c=w;else c=w-u+c|0;y=qg(a,y,f,c,0)|0;z=(k[B>>2]|0)+(z*3|0)|0;i[z>>0]=g;i[z+1>>0]=e;i[z+2>>0]=y}if((b|0)<(k[A>>2]|0))z=b;else break}return}function pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=(k[a+156>>2]|0)-b|0;n=k[a+4584>>2]|0;o=k[a+4580>>2]|0;j=n+((b+-1|0)*3|0)|0;p=i[j>>0]|0;h=i[j+1>>0]|0;j=i[j+2>>0]|0;f=0;while(1){c=n+((f+b|0)*3|0)|0;d=c+1|0;e=c+2|0;if(!(((i[c>>0]|0)==p<<24>>24?(i[d>>0]|0)==h<<24>>24:0)&(i[e>>0]|0)==j<<24>>24))break;i[c>>0]=p;i[d>>0]=h;i[e>>0]=j;f=f+1|0;if((f|0)==(m|0)){f=m;break}}e=(f|0)==(m|0);g=a+4576|0;d=k[36476+(k[g>>2]<<2)>>2]|0;if((1<(f|0))c=f;else{c=f;do{ke(a,1,1);d=k[g>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[g>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>0]|0;b=m+2|0;e=i[b>>0]|0;o=o+(d*3|0)|0;d=i[o+1>>0]|0;t=i[o+2>>0]|0;o=l[o>>0]|0;q=o-(p&255)>>31|1;r=(ia((l[m>>0]|0)-o<<24,q)|0)>>24;s=a+4552|0;rg(a,s,r);p=d&255;d=p-(h&255)>>31|1;c=(ia((c&255)-p<<24,d)|0)>>24;rg(a,s,c);h=t&255;j=h-(j&255)>>31|1;e=(ia((e&255)-h<<24,j)|0)>>24;rg(a,s,e);o=(ia(r,q)|0)+o&255;p=(ia(c,d)|0)+p&255;a=(ia(e,j)|0)+h&255;i[m>>0]=o;i[n>>0]=p;i[b>>0]=a;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;a=f+1|0;return a|0}if(!c){t=m;return t|0}ke(a,1,1);t=m;return t|0}function qg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;i=(q^b)-q|0;p=a+172+(i*12|0)+10|0;g=j[p>>1]|0;o=a+172+(i*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){f=5;while(1)if((g<>1]^q)-q+d|0;if((e&255|0)==(e|0))m=e;else m=e>>31&255^255;h=(c-m^q)-q<<24;l=h>>24;if(!f)e=(k[a+172+(i*12|0)+4>>2]<<1)+-1+g>>31;else e=0;e=e^l;e=e>>30^e<<1;d=e>>f;if((d|0)<23){ke(a,1,d+1|0);ke(a,e&(1<>1]|0;e=g<<16>>16==64;f=e&1;c=(k[d>>2]|0)+l>>f;g=e?32:g<<16>>16;k[o>>2]=(k[o>>2]|0)+((h|0)>-16777216?l:0-l|0)>>f;f=g+1|0;j[p>>1]=f;e=f+c|0;if((e|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(e|0)>(~g|0)?e:0-g|0;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}if((c|0)<=0){p=c;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}p=c-f|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[d>>2]=p;q=l^q;b=b>>>31;b=m+b|0;b=b+q|0;b=b&255;return b|0}function rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;sg(a,e,d,31-(k[36476+(k[a+4576>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function sg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=c>>b;f=d+-8|0;if((e|0)<(d+-9|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-39|0)}else ke(a,1,f);ke(a,c+255&255,8);return}function tg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,255,0);j=a+160|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+164>>2]|0):0)?(k[h+12>>2]|0)==(k[a+168>>2]|0):0){j=k[8900]|0;k[a+4588>>2]=j+(((k[8901]|0)-j|0)>>>1);r=l;return}c=a+4592|0;d=a+4596|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=512){if(f>>>0>512?(g=b+512|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,512-f|0);b=k[c>>2]|0}h=a+4588|0;k[h>>2]=b+256;g=a+168|0;e=a+164|0;f=-256;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==256)break}r=l;return}function ug(a){a=a|0;var b=0,c=0;k[a>>2]=35884;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);a=a+4|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function vg(a){a=a|0;var b=0,c=0;k[a>>2]=35884;b=k[a+4616>>2]|0;if(b){c=a+4620|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36612;b=k[a+120>>2]|0;if(b){c=a+124|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+92|0;b=k[c>>2]|0;k[c>>2]=0;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);c=a+4|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+136>>2]|0,k[a+144>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+184>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+188>>2]=f;k[a+192>>2]=e;Gg(a);e=a+140|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+196+(f*12|0)>>2]=b;k[a+196+(f*12|0)+4>>2]=0;j[a+196+(f*12|0)+8>>1]=0;j[a+196+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4576>>2]=h;k[a+4580>>2]=0;i[a+4584>>0]=l;i[a+4585>>0]=1;i[a+4586>>0]=0;k[a+4588>>2]=h;k[a+4592>>2]=1;i[a+4596>>0]=l;i[a+4597>>0]=1;i[a+4598>>0]=0;k[a+4600>>2]=0;r=g;return}function xg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0;n=r;r=r+16|0;l=n;h=a+92|0;g=k[b>>2]|0;k[b>>2]=0;b=k[h>>2]|0;k[h>>2]=g;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);k[l>>2]=0;k[l+4>>2]=d;h=c+8|0;k[l+8>>2]=k[h>>2];if(d){b=lj(4624)|0;d=a+8|0;e=b+4|0;f=d;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=b+88|0;g=e+40|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[b>>2]=35660;k[b+128>>2]=k[a+136>>2];k[b+132>>2]=k[a+140>>2];k[b+136>>2]=k[a+144>>2];k[b+140>>2]=k[a+148>>2];k[b+144>>2]=k[a+152>>2];k[b+148>>2]=k[a+156>>2];k[b+152>>2]=k[a+160>>2];e=b+156|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[b+172>>2]=k[d>>2];k[b+176>>2]=0;k[b+180>>2]=0;k[b+184>>2]=0;e=b+4568|0;d=b+188|0;do{k[d>>2]=0;k[d+4>>2]=0;j[d+8>>1]=0;j[d+10>>1]=1;d=d+12|0}while((d|0)!=(e|0));f=a+4|0;k[e>>2]=0;k[e+4>>2]=0;j[e+8>>1]=0;i[e+10>>0]=0;g=b+4580|0;k[g>>2]=0;k[g+4>>2]=0;j[g+8>>1]=0;i[g+10>>0]=0;g=b+4592|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;i[g+28>>0]=0;if(!(k[b+28>>2]|0))k[b+20>>2]=1;d=k[f>>2]|0;k[f>>2]=b;if(d){Lb[k[(k[d>>2]|0)+4>>2]&255](d);b=k[f>>2]|0}ee(b,l)}l=a+100|0;k[l>>2]=32;k[a+96>>2]=0;b=k[c>>2]|0;if(!b){k[a+108>>2]=k[c+4>>2];k[a+104>>2]=k[h>>2];zg(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}k[a+132>>2]=b;e=a+120|0;h=a+124|0;d=k[h>>2]|0;b=k[e>>2]|0;f=b;g=d-f|0;if(g>>>0>=4e3){if(g>>>0>4e3?(m=b+4e3|0,(d|0)!=(m|0)):0){k[h>>2]=m;d=m}}else{fe(e,4e3-g|0);b=k[e>>2]|0;f=b;d=k[h>>2]|0}k[a+108>>2]=f;k[a+104>>2]=d-b;zg(a);m=a+116|0;m=k[m>>2]|0;a=k[l>>2]|0;a=a+-32|0;a=(a|0)/8|0;a=m-a|0;r=n;return a|0}\nfunction yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+32>>2]|0)!=0?(k[a+24>>2]|0)!=1:0){p=a+8|0;s=a+36|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+16>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+20>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function zg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;t=r;r=r+32|0;v=t+12|0;s=t;p=a+180|0;q=(k[p>>2]|0)+4|0;if((k[a+32>>2]|0)==1)n=k[a+24>>2]|0;else n=1;b=ia(n<<1,q)|0;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;a:do if(b){if(!((b|0)<0?(x=0,qa(178,v|0),u=x,x=0,u&1):0))o=6;if((o|0)==6?(x=0,c=ta(67,b|0)|0,u=x,x=0,!(u&1)):0){k[w>>2]=c;k[v>>2]=c;k[v+8>>2]=c+b;while(1){i[c>>0]=0;c=(k[w>>2]|0)+1|0;k[w>>2]=c;b=b+-1|0;if(!b)break a}}c=Wa()|0;b=k[v>>2]|0;if(!b)fb(c|0);if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);fb(c|0)}while(0);k[s>>2]=0;u=s+4|0;k[u>>2]=0;k[s+8>>2]=0;do if(!n)o=19;else{if(!(n>>>0>1073741823?(x=0,qa(178,s|0),m=x,x=0,m&1):0))o=17;if((o|0)==17?(d=n<<2,x=0,e=ta(67,d|0)|0,m=x,x=0,!(m&1)):0){k[s>>2]=e;o=e+(n<<2)|0;k[s+8>>2]=o;sw(e|0,0,d|0)|0;k[u>>2]=o;o=19;break}c=Wa()|0;b=k[s>>2]|0;d=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}while(0);if((o|0)==19){g=a+12|0;b:do if((k[g>>2]|0)>0){h=a+4604|0;j=(ia(n,q)|0)+1|0;l=a+4608|0;m=a+92|0;f=a+4600|0;if((n|0)>0)e=0;else{d=0;while(1){c=k[v>>2]|0;b=c+1|0;k[h>>2]=b;c=c+j|0;k[l>>2]=c;if(!(d&1))b=c;else{k[h>>2]=c;k[l>>2]=b}n=k[m>>2]|0;x=0;Ja(k[(k[n>>2]|0)+12>>2]|0,n|0,b|0,k[p>>2]|0,q|0);n=x;x=0;if(n&1)break;d=d+1|0;if((d|0)>=(k[g>>2]|0)){o=45;break b}}c=Wa()|0;break}c:while(1){c=k[v>>2]|0;b=c+1|0;k[h>>2]=b;c=c+j|0;k[l>>2]=c;if(!(e&1))b=c;else{k[h>>2]=c;k[l>>2]=b}o=k[m>>2]|0;x=0;Ja(k[(k[o>>2]|0)+12>>2]|0,o|0,b|0,k[p>>2]|0,q|0);o=x;x=0;if(o&1){o=28;break}b=k[s>>2]|0;c=k[h>>2]|0;d=0;do{k[f>>2]=k[b+(d<<2)>>2];o=k[p>>2]|0;i[c+o>>0]=i[c+(o+-1)>>0]|0;i[(k[l>>2]|0)+-1>>0]=i[k[h>>2]>>0]|0;x=0;ra(75,a|0,0);o=x;x=0;if(o&1){o=36;break c}b=k[s>>2]|0;k[b+(d<<2)>>2]=k[f>>2];c=(k[h>>2]|0)+q|0;k[h>>2]=c;k[l>>2]=(k[l>>2]|0)+q;d=d+1|0}while((d|0)<(n|0));e=e+1|0;if((e|0)>=(k[g>>2]|0)){o=45;break b}}if((o|0)==28){c=Wa()|0;break}else if((o|0)==36){c=Wa()|0;break}}else o=45;while(0);do if((o|0)==45){x=0;qa(182,a|0);a=x;x=0;if(a&1){c=Wa()|0;break}b=k[s>>2]|0;c=b;if(b){d=k[u>>2]|0;if((d|0)!=(b|0))k[u>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[v>>2]|0;if(!b){r=t;return}if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);r=t;return}while(0);b=k[s>>2]|0;d=b;if(b){e=k[u>>2]|0;if((e|0)!=(b|0))k[u>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}b=k[v>>2]|0;if(!b)fb(c|0);if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);fb(c|0)}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+4604|0;b=k[o>>2]|0;r=a+180|0;if((k[r>>2]|0)<=0)return;p=a+4608|0;q=a+4612|0;e=b;f=l[b+-1>>0]|0;b=l[b>>0]|0;n=0;while(1){m=k[p>>2]|0;j=l[m+(n+-1)>>0]|0;d=n+1|0;c=l[e+d>>0]|0;h=k[q>>2]|0;g=b-f|0;e=f-j|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(Cg(a,n,0)|0)+n|0;c=k[o>>2]|0;b=l[c+(d+-1)>>0]|0;c=l[c+d>>0]|0}else{f=b-j>>31;if((f^e|0)<0)e=b;else e=j+((f^g|0)<0?0:g)|0;m=Bg(a,h,l[m+n>>0]|0,e,0)|0;i[(k[p>>2]|0)+n>>0]=m}if((d|0)>=(k[r>>2]|0))break;e=k[o>>2]|0;f=b;b=c;n=d}return}function Bg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;f=(r^b)-r|0;p=a+196+(f*12|0)+10|0;g=j[p>>1]|0;o=a+196+(f*12|0)|0;e=k[o>>2]|0;if((g|0)<(e|0))if((g<<1|0)<(e|0))if((g<<2|0)<(e|0))if((g<<3|0)<(e|0))if((g<<4|0)<(e|0)){b=5;while(1)if((g<>1]^r)-r+d|0;q=a+136|0;d=k[q>>2]|0;if((e&d|0)==(e|0))l=e;else l=d&~(e>>31);e=(c-l^r)-r|0;i=a+144|0;d=k[i>>2]|0;if((e|0)>0)e=(e+d|0)/(d<<1|1|0)|0;else e=(e-d|0)/(d<<1|1|0)|0;n=a+140|0;h=k[n>>2]|0;c=((e|0)<0?h:0)+e|0;h=c-((c|0)<((h+1|0)/2|0|0)?0:h)|0;f=a+196+(f*12|0)+4|0;if(!(d|b))e=(k[f>>2]<<1)+-1+g>>31;else e=0;d=e^h;Fg(a,b,d>>30^d<<1,k[a+156>>2]|0);d=k[a+160>>2]|0;b=(k[o>>2]|0)+((h|0)>-1?h:0-h|0)|0;e=(k[f>>2]|0)+(ia(k[i>>2]<<1|1,h)|0)|0;c=j[p>>1]|0;if((c|0)==(d|0)){b=b>>1;e=e>>1;c=d>>1}k[o>>2]=b;d=c+1|0;j[p>>1]=d;b=d+e|0;if((b|0)>=1){if((e|0)>0){e=e-d|0;p=j[m>>1]|0;j[m>>1]=(p<<16>>16<127&1)+(p&65535);e=(e|0)>0?0:e}}else{e=j[m>>1]|0;j[m>>1]=(e&65535)-(e<<16>>16>-128&1);e=(b|0)>(~c|0)?b:0-c|0}k[f>>2]=e;d=k[i>>2]|0;c=d<<1|1;b=(ia(c,(h^r)-r|0)|0)+l|0;if((b|0)>=(0-d|0)){e=k[q>>2]|0;if((e+d|0)<(b|0))b=b-(ia(k[n>>2]|0,c)|0)|0}else{b=(ia(k[n>>2]|0,c)|0)+b|0;e=k[q>>2]|0}if((b&e|0)==(b|0)){r=b;r=r&255;return r|0}r=e&~(b>>31);r=r&255;return r|0}function Cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;j=(k[a+180>>2]|0)-b|0;m=k[a+4608>>2]|0;n=k[a+4604>>2]|0;e=i[m+(b+-1)>>0]|0;h=e&255;c=a+144|0;f=0;while(1){d=m+(f+b)|0;g=(l[d>>0]|0)-h|0;if((((g|0)>-1?g:0-g|0)|0)>(k[c>>2]|0))break;i[d>>0]=e;f=f+1|0;if((f|0)==(j|0)){f=j;break}}e=(f|0)==(j|0);g=a+4600|0;d=k[36476+(k[g>>2]<<2)>>2]|0;if((1<(f|0))c=f;else{c=f;do{ke(a,1,1);d=k[g>>2]|0;c=c-(1<>2])|0;d=(d|0)>30?31:d+1|0;k[g>>2]=d;d=k[36476+(d<<2)>>2]|0}while((c|0)>=(1<>0]|0,h,l[n+j>>0]|0)|0;i[b>>0]=a;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;a=f+1|0;return a|0}if(!c){a=j;return a|0}ke(a,1,1);a=j;return a|0}function Dg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c-d|0;i=a+136|0;g=a+144|0;e=k[g>>2]|0;if((((h|0)>-1?h:0-h|0)|0)>(e|0)){f=d-c>>31|1;b=ia(f,b-d|0)|0;if((b|0)>0)b=(e+b|0)/(e<<1|1|0)|0;else b=(b-e|0)/(e<<1|1|0)|0;h=a+140|0;e=k[h>>2]|0;c=((b|0)<0?e:0)+b|0;e=c-((c|0)<((e+1|0)/2|0|0)?0:e)|0;Eg(a,a+4576|0,e);e=ia(e,f)|0;f=k[g>>2]|0;g=f<<1|1;e=(ia(e,g)|0)+d|0;if((e|0)>=(0-f|0)){b=k[i>>2]|0;if((b+f|0)<(e|0))e=e-(ia(k[h>>2]|0,g)|0)|0}else{e=(ia(k[h>>2]|0,g)|0)+e|0;b=k[i>>2]|0}if((e&b|0)==(e|0)){i=e;i=i&255;return i|0}i=b&~(e>>31);i=i&255;return i|0}else{b=b-c|0;if((b|0)>0)b=(e+b|0)/(e<<1|1|0)|0;else b=(b-e|0)/(e<<1|1|0)|0;h=a+140|0;e=k[h>>2]|0;f=((b|0)<0?e:0)+b|0;e=f-((f|0)<((e+1|0)/2|0|0)?0:e)|0;Eg(a,a+4588|0,e);f=k[g>>2]|0;g=f<<1|1;e=(ia(g,e)|0)+c|0;if((e|0)>=(0-f|0)){b=k[i>>2]|0;if((b+f|0)<(e|0))e=e-(ia(k[h>>2]|0,g)|0)|0}else{e=(ia(k[h>>2]|0,g)|0)+e|0;b=k[i>>2]|0}if((e&b|0)==(e|0)){i=e;i=i&255;return i|0}i=b&~(e>>31);i=i&255;return i|0}return 0}function Eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=b+9|0;g=l[n>>0]|0;m=b+4|0;j=k[m>>2]|0;e=(ia(g>>>1,j)|0)+(k[b>>2]|0)|0;if((g|0)<(e|0)){f=g;d=0;do{f=f<<1;d=d+1|0}while((f|0)<(e|0));e=d}else e=0;if((c|0)>0&(e|0)==0?l[b+10>>0]<<1>>>0>>0:0)d=1;else h=5;do if((h|0)==5){d=(c|0)<0;if(d?l[b+10>>0]<<1>>>0>=g>>>0:0){d=1;break}d=d&(e|0)!=0}while(0);d=(((c|0)>-1?c:0-c|0)<<1)-j+(d<<31>>31)|0;Fg(a,e,d,(k[a+156>>2]|0)+-1-(k[36476+(k[a+4600>>2]<<2)>>2]|0)|0);if((c|0)<0){a=b+10|0;i[a>>0]=(l[a>>0]|0)+1}d=(d+1-(k[m>>2]|0)>>1)+(k[b>>2]|0)|0;k[b>>2]=d;e=i[n>>0]|0;if(e<<24>>24!=(i[b+8>>0]|0)){b=e;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}k[b>>2]=d>>1;a=(e&255)>>>1;i[n>>0]=a;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=a;b=b&255;b=b+1|0;b=b&255;i[n>>0]=b;return}function Fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=c>>b;f=a+148|0;g=d-(k[f>>2]|0)|0;if((e|0)<(g+-1|0)){if((e|0)>30){d=(e|0)/2|0;ke(a,0,d);e=e-d|0}ke(a,1,e+1|0);ke(a,(1<31){ke(a,0,31);ke(a,1,d+-31-(k[f>>2]|0)|0)}else ke(a,1,g);b=k[f>>2]|0;ke(a,(1<>2]|0)){c=k[a+136>>2]|0;b=a+152|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+184>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+188>>2]|0):0)?(k[d+12>>2]|0)==(k[a+192>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4612>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4612>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4612>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4612>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+152|0;while(0);m=1<>2];c=a+4616|0;d=m<<1;e=a+4620|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4612|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+192|0;j=a+188|0;g=a+184|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function Hg(a){a=a|0;var b=0,c=0;k[a>>2]=35856;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Ig(a){a=a|0;var b=0,c=0;k[a>>2]=35856;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+128>>2]|0,k[a+136>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+176>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+180>>2]=f;k[a+184>>2]=e;Vg(a);e=a+132|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+188+(f*12|0)>>2]=b;k[a+188+(f*12|0)+4>>2]=0;j[a+188+(f*12|0)+8>>1]=0;j[a+188+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4568>>2]=h;k[a+4572>>2]=0;i[a+4576>>0]=l;i[a+4577>>0]=1;i[a+4578>>0]=0;k[a+4580>>2]=h;k[a+4584>>2]=1;i[a+4588>>0]=l;i[a+4589>>0]=1;i[a+4590>>0]=0;k[a+4592>>2]=0;r=g;return}function Lg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4620>>0]=e&1;b=a+156|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);Mg(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function Mg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+172|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,C|0),B=x,x=0,B&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,B=x,x=0,!(B&1)):0){k[C>>2]=d;B=d+(b<<1)|0;k[C+8>>2]=B;sw(d|0,0,c|0)|0;k[D>>2]=B;break}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)g=18;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))g=16;if((g|0)==16?(e=y<<2,x=0,f=ta(67,e|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=f;g=f+(y<<2)|0;k[z+8>>2]=g;sw(f|0,0,e|0)|0;k[B>>2]=g;g=18;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+8|0;a:do if((k[f>>2]|0)>0){g=a+4596|0;h=ia(y,w)|0;i=h+1|0;l=a+4600|0;m=(y|0)>0;n=a+160|0;o=a+168|0;p=a+164|0;q=a+156|0;s=a+88|0;t=a+4592|0;u=0;b:while(1){d=k[C>>2]|0;c=d+2|0;k[g>>2]=c;d=d+(i<<1)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];e=k[v>>2]|0;j[c+(e<<1)>>1]=j[c+(e+-1<<1)>>1]|0;j[b+-2>>1]=j[c>>1]|0;x=0;ra(76,a|0,0);e=x;x=0;if(e&1){g=29;break b}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w<<1)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w<<1)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+((k[q>>2]|0)-h<<1)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){g=30;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){g=42;break a}}if((g|0)==29){d=Wa()|0;break}else if((g|0)==30){d=Wa()|0;break}}else g=42;while(0);do if((g|0)==42){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function Ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=a+4596|0;c=k[q>>2]|0;u=a+172|0;b=k[u>>2]|0;if((b|0)<=0)return;r=a+4600|0;s=a+4604|0;t=a+4592|0;h=c;f=m[c+-2>>1]|0;c=m[c>>1]|0;p=0;while(1){n=k[r>>2]|0;g=j[n+(p+-1<<1)>>1]|0;o=g&65535;e=p+1|0;d=m[h+(e<<1)>>1]|0;l=k[s>>2]|0;h=c-f|0;f=f-o|0;l=((((i[l+(d-c)>>0]|0)*9|0)+(i[l+h>>0]|0)|0)*9|0)+(i[l+f>>0]|0)|0;n=n+(p<<1)|0;if(!l){b=Qg(a,g,n,b-p|0)|0;c=b+p|0;if((c|0)!=(k[u>>2]|0)){o=Rg(a,o,m[(k[q>>2]|0)+(c<<1)>>1]|0)|0;j[(k[r>>2]|0)+(c<<1)>>1]=o;o=k[t>>2]|0;k[t>>2]=(o|0)<1?0:o+-1|0;b=b+1|0}e=b+p|0;d=k[q>>2]|0;c=m[d+(e+-1<<1)>>1]|0;d=m[d+(e<<1)>>1]|0}else{b=c-o>>31;if((b^f|0)<0)b=c;else b=o+((b^h|0)<0?0:h)|0;o=Pg(a,l,m[n>>1]|0,b,0)|0;j[(k[r>>2]|0)+(p<<1)>>1]=o}b=k[u>>2]|0;if((b|0)<=(e|0))break;h=k[q>>2]|0;f=c;c=d;p=e}return}function Og(a){a=a|0;var b=0,c=0,d=0,e=0;d=a+116|0;c=k[d>>2]|0;if((i[c>>0]|0)!=-1){e=a+112|0;b=k[e>>2]|0;if((b|0)<1){qe(a);b=k[e>>2]|0;c=k[d>>2]|0}a=a+108|0;d=k[a>>2]|0;k[e>>2]=b+-1;b=d<<1;k[a>>2]=b;if((i[c>>0]|0)!=-1){b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,6,35648);a=x;x=0;if(!(a&1))ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}}else b=k[a+108>>2]|0;if(!b)return;b=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,b|0,6,35648);a=x;x=0;if(!(a&1))ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}function Pg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;l=(r^b)-r|0;p=a+188+(l*12|0)+10|0;c=j[p>>1]|0;o=a+188+(l*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){b=5;while(1)if((c<>1]^r)-r+d|0;q=a+128|0;e=k[q>>2]|0;if((c&e|0)==(c|0))m=c;else m=e&~(c>>31);c=a+112|0;if((k[c>>2]|0)<8)qe(a);e=a+108|0;d=k[e>>2]|0;f=d>>>24;g=k[2832+(b<<11)+(f<<3)+4>>2]|0;if(!g){h=k[a+148>>2]|0;e=k[a+140>>2]|0;c=Tg(a)|0;if((c|0)<(h+-1-e|0)){if(b)c=(Ug(a,b)|0)+(c<>31^c>>1;if((((c|0)>-1?c:0-c|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(c|0);fb(a|0)}else ub(c|0,824,96)}}else{k[c>>2]=(k[c>>2]|0)-g;k[e>>2]=d<>2]|0}h=a+136|0;d=k[h>>2]|0;if(!b){if(!d)e=(k[a+188+(l*12|0)+4>>2]<<1)+-1+(j[p>>1]|0)>>31;else e=0;g=e^c}else g=c;b=k[a+152>>2]|0;e=(k[o>>2]|0)+((g|0)>-1?g:0-g|0)|0;f=a+188+(l*12|0)+4|0;c=(k[f>>2]|0)+(ia(d<<1|1,g)|0)|0;d=j[p>>1]|0;if((d|0)==(b|0)){e=e>>1;c=c>>1;d=b>>1}k[o>>2]=e;b=d+1|0;j[p>>1]=b;e=b+c|0;if((e|0)>=1){if((c|0)>0){c=c-b|0;p=j[n>>1]|0;j[n>>1]=(p<<16>>16<127&1)+(p&65535);c=(c|0)>0?0:c}}else{c=j[n>>1]|0;j[n>>1]=(c&65535)-(c<<16>>16>-128&1);c=(e|0)>(~d|0)?e:0-d|0}k[f>>2]=c;b=k[h>>2]|0;d=b<<1|1;e=(ia(d,(g^r)-r|0)|0)+m|0;if((e|0)>=(0-b|0)){c=k[q>>2]|0;if((c+b|0)<(e|0))e=e-(ia(k[a+132>>2]|0,d)|0)|0}else{e=(ia(k[a+132>>2]|0,d)|0)+e|0;c=k[q>>2]|0}if((e&c|0)==(e|0)){a=e;a=a&65535;return a|0}a=c&~(e>>31);a=a&65535;return a|0}function Qg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0;h=a+112|0;l=a+108|0;m=a+4592|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[l>>2]|0;e=e+-1|0;k[h>>2]=e;k[l>>2]=g<<1;if((g|0)>=0){n=8;break}g=k[m>>2]|0;o=1<>2];p=d-f|0;p=(o|0)<(p|0)?o:p;f=p+f|0;if((p|0)==(o|0))k[m>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((n|0)==8)if((f|0)!=(d|0)){e=k[m>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);p=x;x=0;if(p&1){p=Wa()|0;Ua(e|0);fb(p|0)}else ub(e|0,824,96)}}else e=d;if((e|0)>0)f=0;else return e|0;do{j[c+(f<<1)>>1]=b;f=f+1|0}while((f|0)!=(e|0));return e|0}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b-c|0;g=a+128|0;d=a+136|0;if((((f|0)>-1?f:0-f|0)|0)>(k[d>>2]|0)){b=ia(Sg(a,a+4568|0)|0,c-b>>31|1)|0;e=k[d>>2]|0;f=e<<1|1;b=(ia(b,f)|0)+c|0;if((b|0)>=(0-e|0)){d=k[g>>2]|0;if((d+e|0)<(b|0))b=b-(ia(k[a+132>>2]|0,f)|0)|0}else{b=(ia(k[a+132>>2]|0,f)|0)+b|0;d=k[g>>2]|0}if((b&d|0)==(b|0)){a=b;a=a&65535;return a|0}a=d&~(b>>31);a=a&65535;return a|0}else{c=Sg(a,a+4580|0)|0;f=k[d>>2]|0;e=f<<1|1;b=(ia(e,c)|0)+b|0;if((b|0)>=(0-f|0)){d=k[g>>2]|0;if((d+f|0)<(b|0))b=b-(ia(k[a+132>>2]|0,e)|0)|0}else{b=(ia(k[a+132>>2]|0,e)|0)+b|0;d=k[g>>2]|0}if((b&d|0)==(b|0)){a=b;a=a&65535;return a|0}a=d&~(b>>31);a=a&65535;return a|0}return 0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0;m=b+9|0;c=l[m>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;g=k[a+148>>2]|0;h=k[36476+(k[a+4592>>2]<<2)>>2]|0;c=k[a+140>>2]|0;e=Tg(a)|0;do if((e|0)<(g+-2-h-c|0))if(!d){d=k[f>>2]|0;a=d+e|0;c=a&1;a=(c+a|0)/2|0;j=8;break}else{h=(Ug(a,d)|0)+(e<>2]|0;e=h+d|0;g=e&1;c=g;f=1;e=(g+e|0)/2|0;break}else{e=(Ug(a,c)|0)+1|0;g=k[f>>2]|0;a=e+g|0;c=a&1;a=(c+a|0)/2|0;if(!d){d=g;j=8}else{h=e;f=1;e=a;d=g}}while(0);if((j|0)==8){h=e;f=l[b+10>>0]<<1>>>0>=(l[m>>0]|0)>>>0;e=a}e=(c|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(h+1-d>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[m>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){b=d;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[m>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=j;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}function Tg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=a+112|0;if((k[f>>2]|0)<16)qe(a);g=a+108|0;c=k[g>>2]|0;if((c|0)>=0)if(!(c&1073741824))if(!(c&536870912))if(!(c&268435456))if(!(c&134217728))if(!(c&67108864))if(!(c&33554432))if(!(c&16777216))if(!(c&8388608))if(!(c&4194304))if(!(c&2097152))if(!(c&1048576))if(!(c&524288))if(!(c&262144))if(!(c&131072)){e=c>>>12&16;b=e+-1|0;if(!e){b=(k[f>>2]|0)+-15|0;k[f>>2]=b;d=c<<15;k[g>>2]=d;c=b;b=15;while(1){if((c|0)<1){qe(a);e=k[g>>2]|0;c=k[f>>2]|0}else e=d;c=c+-1|0;k[f>>2]=c;d=e<<1;k[g>>2]=d;if((e|0)<0)break;else b=b+1|0}return b|0}}else b=14;else b=13;else b=12;else b=11;else b=10;else b=9;else b=8;else b=7;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;a=b+1|0;k[f>>2]=(k[f>>2]|0)-a;k[g>>2]=c<>2]|0;if((c|0)<(b|0)){qe(a);c=k[d>>2]|0;if((c|0)<(b|0)){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(c|0);fb(a|0)}else ub(c|0,824,96)}}e=a+108|0;a=k[e>>2]|0;k[d>>2]=c-b;k[e>>2]=a<>>(32-b|0)|0}function Vg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+136|0;a:do if(!(k[n>>2]|0)){c=k[a+128>>2]|0;b=a+144|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+176>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+180>>2]|0):0)?(k[d+12>>2]|0)==(k[a+184>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4604>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4604>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4604>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4604>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+144|0;while(0);m=1<>2];c=a+4608|0;d=m<<1;e=a+4612|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4604|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+184|0;j=a+180|0;g=a+176|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function Wg(a){a=a|0;var b=0,c=0;k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Xg(a){a=a|0;var b=0,c=0;k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Yg(a){a=a|0;var b=0,c=0;k[a>>2]=35828;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Zg(a){a=a|0;var b=0,c=0;k[a>>2]=35828;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function _g(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=6;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=6;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function $g(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+128>>2]|0,k[a+136>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+176>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+180>>2]=f;k[a+184>>2]=e;hh(a);e=a+132|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+188+(f*12|0)>>2]=b;k[a+188+(f*12|0)+4>>2]=0;j[a+188+(f*12|0)+8>>1]=0;j[a+188+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4568>>2]=h;k[a+4572>>2]=0;i[a+4576>>0]=l;i[a+4577>>0]=1;i[a+4578>>0]=0;k[a+4580>>2]=h;k[a+4584>>2]=1;i[a+4588>>0]=l;i[a+4589>>0]=1;i[a+4590>>0]=0;k[a+4592>>2]=0;r=g;return}function ah(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4620>>0]=e&1;b=a+156|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);bh(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function bh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+172|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;do if(b){if(!(b>>>0>715827882?(x=0,qa(178,C|0),B=x,x=0,B&1):0))g=6;if((g|0)==6?(x=0,c=ta(67,b*6|0)|0,B=x,x=0,!(B&1)):0){k[D>>2]=c;k[C>>2]=c;d=c+(b*6|0)|0;k[C+8>>2]=d;while(1){j[c>>1]=0;j[c+2>>1]=0;j[c+4>>1]=0;b=b+-1|0;if(!b)break;else c=c+6|0}k[D>>2]=d;break}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)g=20;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))g=18;if((g|0)==18?(e=y<<2,x=0,f=ta(67,e|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=f;g=f+(y<<2)|0;k[z+8>>2]=g;sw(f|0,0,e|0)|0;k[B>>2]=g;g=20;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==20){f=a+8|0;a:do if((k[f>>2]|0)>0){g=a+4596|0;h=ia(y,w)|0;i=h+1|0;l=a+4600|0;m=(y|0)>0;n=a+160|0;o=a+168|0;p=a+164|0;q=a+156|0;s=a+88|0;t=a+4592|0;u=0;b:while(1){d=k[C>>2]|0;c=d+6|0;k[g>>2]=c;d=d+(i*6|0)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];b=k[v>>2]|0;e=c+(b*6|0)|0;c=c+((b+-1|0)*6|0)|0;j[e>>1]=j[c>>1]|0;j[e+2>>1]=j[c+2>>1]|0;j[e+4>>1]=j[c+4>>1]|0;e=(k[l>>2]|0)+-6|0;c=k[g>>2]|0;j[e>>1]=j[c>>1]|0;j[e+2>>1]=j[c+2>>1]|0;j[e+4>>1]=j[c+4>>1]|0;x=0;ra(77,a|0,0);e=x;x=0;if(e&1){g=31;break b}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w*6|0)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w*6|0)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+(((k[q>>2]|0)-h|0)*6|0)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){g=32;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){g=44;break a}}if((g|0)==31){d=Wa()|0;break}else if((g|0)==32){d=Wa()|0;break}}else g=44;while(0);do if((g|0)==44){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-6-b|0)>>>0)/6|0)*6|0);mj(b);fb(d|0)}function ch(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;N=r;r=r+32|0;D=N+24|0;M=N+18|0;L=N+12|0;E=N+6|0;F=N;G=a+172|0;b=k[G>>2]|0;if((b|0)<=0){r=N;return}H=a+4600|0;I=a+4596|0;J=a+4604|0;K=a+4592|0;C=0;while(1){d=C+-1|0;e=k[H>>2]|0;O=k[I>>2]|0;c=C+1|0;f=m[O+(C*6|0)>>1]|0;B=k[J>>2]|0;g=m[O+(d*6|0)>>1]|0;h=f-g|0;l=m[e+(d*6|0)>>1]|0;n=g-l|0;o=((((i[B+((m[O+(c*6|0)>>1]|0)-f)>>0]|0)*9|0)+(i[B+h>>0]|0)|0)*9|0)+(i[B+n>>0]|0)|0;p=m[O+(C*6|0)+2>>1]|0;q=m[O+(d*6|0)+2>>1]|0;s=p-q|0;t=m[e+(d*6|0)+2>>1]|0;u=q-t|0;v=((((i[B+((m[O+(c*6|0)+2>>1]|0)-p)>>0]|0)*9|0)+(i[B+s>>0]|0)|0)*9|0)+(i[B+u>>0]|0)|0;w=m[O+(C*6|0)+4>>1]|0;x=m[O+(d*6|0)+4>>1]|0;y=w-x|0;z=m[e+(d*6|0)+4>>1]|0;A=x-z|0;B=((((i[B+((m[O+(c*6|0)+4>>1]|0)-w)>>0]|0)*9|0)+(i[B+y>>0]|0)|0)*9|0)+(i[B+A>>0]|0)|0;if(!(v|o|B)){c=e+(d*6|0)|0;j[L>>1]=j[c>>1]|0;j[L+2>>1]=j[c+2>>1]|0;j[L+4>>1]=j[c+4>>1]|0;j[D>>1]=j[c>>1]|0;j[D+2>>1]=j[c+2>>1]|0;j[D+4>>1]=j[c+4>>1]|0;b=dh(a,D,e+(C*6|0)|0,b-C|0)|0;c=b+C|0;if((c|0)!=(k[G>>2]|0)){O=(k[I>>2]|0)+(c*6|0)|0;j[F>>1]=j[O>>1]|0;j[F+2>>1]=j[O+2>>1]|0;j[F+4>>1]=j[O+4>>1]|0;O=(k[H>>2]|0)+(c*6|0)|0;j[M>>1]=j[L>>1]|0;j[M+2>>1]=j[L+2>>1]|0;j[M+4>>1]=j[L+4>>1]|0;j[D>>1]=j[F>>1]|0;j[D+2>>1]=j[F+2>>1]|0;j[D+4>>1]=j[F+4>>1]|0;eh(E,a,M,D);j[O>>1]=j[E>>1]|0;j[O+2>>1]=j[E+2>>1]|0;j[O+4>>1]=j[E+4>>1]|0;O=k[K>>2]|0;k[K>>2]=(O|0)<1?0:O+-1|0;b=b+1|0}c=b+C|0}else{d=m[e+(C*6|0)>>1]|0;b=f-l>>31;if((b^n|0)>=0)if((b^h|0)<0)b=l;else b=l-g+f|0;else b=f;f=fh(a,o,d,b,0)|0;d=m[(k[H>>2]|0)+(C*6|0)+2>>1]|0;b=p-t>>31;if((b^u|0)>=0)if((b^s|0)<0)b=t;else b=t-q+p|0;else b=p;d=fh(a,v,d,b,0)|0;e=m[(k[H>>2]|0)+(C*6|0)+4>>1]|0;b=w-z>>31;if((b^A|0)>=0)if((b^y|0)<0)b=z;else b=z-x+w|0;else b=w;B=fh(a,B,e,b,0)|0;O=k[H>>2]|0;j[O+(C*6|0)>>1]=f;j[O+(C*6|0)+2>>1]=d;j[O+(C*6|0)+4>>1]=B}b=k[G>>2]|0;if((c|0)>=(b|0))break;else C=c}r=N;return}function dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0;h=a+112|0;l=a+108|0;m=a+4592|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[l>>2]|0;e=e+-1|0;k[h>>2]=e;k[l>>2]=g<<1;if((g|0)>=0){n=8;break}g=k[m>>2]|0;o=1<>2];p=d-f|0;p=(o|0)<(p|0)?o:p;f=p+f|0;if((p|0)==(o|0))k[m>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((n|0)==8)if((f|0)!=(d|0)){e=k[m>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);p=x;x=0;if(p&1){p=Wa()|0;Ua(e|0);fb(p|0)}else ub(e|0,824,96)}}else e=d;if((e|0)<=0)return e|0;f=0;do{p=c+(f*6|0)|0;j[p>>1]=j[b>>1]|0;j[p+2>>1]=j[b+2>>1]|0;j[p+4>>1]=j[b+4>>1]|0;f=f+1|0}while((f|0)!=(e|0));return e|0}function eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0;i=b+4568|0;o=gh(b,i)|0;g=gh(b,i)|0;i=gh(b,i)|0;f=b+128|0;e=m[d>>1]|0;l=k[b+136>>2]|0;n=l<<1|1;e=(ia(ia(n,o)|0,e-(m[c>>1]|0)>>31|1)|0)+e|0;o=0-l|0;if((e|0)>=(o|0)){f=k[f>>2]|0;if((f+l|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else{e=(ia(k[b+132>>2]|0,n)|0)+e|0;f=k[f>>2]|0}if((e&f|0)!=(e|0))e=f&~(e>>31);h=e&65535;e=m[d+2>>1]|0;e=(ia(ia(n,g)|0,e-(m[c+2>>1]|0)>>31|1)|0)+e|0;if((e|0)>=(o|0)){if((f+l|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else e=(ia(k[b+132>>2]|0,n)|0)+e|0;if((e&f|0)!=(e|0))e=f&~(e>>31);g=e&65535;e=m[d+4>>1]|0;e=(ia(ia(n,i)|0,e-(m[c+4>>1]|0)>>31|1)|0)+e|0;if((e|0)>=(o|0)){if((f+l|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else e=(ia(k[b+132>>2]|0,n)|0)+e|0;if((e&f|0)==(e|0)){b=e;b=b&65535;j[a>>1]=h;o=a+2|0;j[o>>1]=g;a=a+4|0;j[a>>1]=b;return}b=f&~(e>>31);b=b&65535;j[a>>1]=h;o=a+2|0;j[o>>1]=g;a=a+4|0;j[a>>1]=b;return}function fh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;l=(r^b)-r|0;p=a+188+(l*12|0)+10|0;c=j[p>>1]|0;o=a+188+(l*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){b=5;while(1)if((c<>1]^r)-r+d|0;q=a+128|0;e=k[q>>2]|0;if((c&e|0)==(c|0))m=c;else m=e&~(c>>31);c=a+112|0;if((k[c>>2]|0)<8)qe(a);e=a+108|0;d=k[e>>2]|0;f=d>>>24;g=k[2832+(b<<11)+(f<<3)+4>>2]|0;if(!g){h=k[a+148>>2]|0;e=k[a+140>>2]|0;c=Tg(a)|0;if((c|0)<(h+-1-e|0)){if(b)c=(Ug(a,b)|0)+(c<>31^c>>1;if((((c|0)>-1?c:0-c|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(c|0);fb(a|0)}else ub(c|0,824,96)}}else{k[c>>2]=(k[c>>2]|0)-g;k[e>>2]=d<>2]|0}h=a+136|0;d=k[h>>2]|0;if(!b){if(!d)e=(k[a+188+(l*12|0)+4>>2]<<1)+-1+(j[p>>1]|0)>>31;else e=0;g=e^c}else g=c;b=k[a+152>>2]|0;e=(k[o>>2]|0)+((g|0)>-1?g:0-g|0)|0;f=a+188+(l*12|0)+4|0;c=(k[f>>2]|0)+(ia(d<<1|1,g)|0)|0;d=j[p>>1]|0;if((d|0)==(b|0)){e=e>>1;c=c>>1;d=b>>1}k[o>>2]=e;b=d+1|0;j[p>>1]=b;e=b+c|0;if((e|0)>=1){if((c|0)>0){c=c-b|0;p=j[n>>1]|0;j[n>>1]=(p<<16>>16<127&1)+(p&65535);c=(c|0)>0?0:c}}else{c=j[n>>1]|0;j[n>>1]=(c&65535)-(c<<16>>16>-128&1);c=(e|0)>(~d|0)?e:0-d|0}k[f>>2]=c;b=k[h>>2]|0;d=b<<1|1;e=(ia(d,(g^r)-r|0)|0)+m|0;if((e|0)>=(0-b|0)){c=k[q>>2]|0;if((c+b|0)<(e|0))e=e-(ia(k[a+132>>2]|0,d)|0)|0}else{e=(ia(k[a+132>>2]|0,d)|0)+e|0;c=k[q>>2]|0}if((e&c|0)==(e|0)){a=e;a=a&65535;return a|0}a=c&~(e>>31);a=a&65535;return a|0}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0;m=b+9|0;c=l[m>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;g=k[a+148>>2]|0;h=k[36476+(k[a+4592>>2]<<2)>>2]|0;c=k[a+140>>2]|0;e=Tg(a)|0;do if((e|0)<(g+-2-h-c|0))if(!d){d=k[f>>2]|0;a=d+e|0;c=a&1;a=(c+a|0)/2|0;j=8;break}else{h=(Ug(a,d)|0)+(e<>2]|0;e=h+d|0;g=e&1;c=g;f=1;e=(g+e|0)/2|0;break}else{e=(Ug(a,c)|0)+1|0;g=k[f>>2]|0;a=e+g|0;c=a&1;a=(c+a|0)/2|0;if(!d){d=g;j=8}else{h=e;f=1;e=a;d=g}}while(0);if((j|0)==8){h=e;f=l[b+10>>0]<<1>>>0>=(l[m>>0]|0)>>>0;e=a}e=(c|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(h+1-d>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[m>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){b=d;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[m>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=j;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}function hh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+136|0;a:do if(!(k[n>>2]|0)){c=k[a+128>>2]|0;b=a+144|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+176>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+180>>2]|0):0)?(k[d+12>>2]|0)==(k[a+184>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4604>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4604>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4604>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4604>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+144|0;while(0);m=1<>2];c=a+4608|0;d=m<<1;e=a+4612|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4604|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+184|0;j=a+180|0;g=a+176|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function ih(a){a=a|0;var b=0,c=0;k[a>>2]=35800;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function jh(a){a=a|0;var b=0,c=0;k[a>>2]=35800;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+128>>2]|0,k[a+136>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+176>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+180>>2]=f;k[a+184>>2]=e;th(a);e=a+132|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+188+(f*12|0)>>2]=b;k[a+188+(f*12|0)+4>>2]=0;j[a+188+(f*12|0)+8>>1]=0;j[a+188+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4568>>2]=h;k[a+4572>>2]=0;i[a+4576>>0]=l;i[a+4577>>0]=1;i[a+4578>>0]=0;k[a+4580>>2]=h;k[a+4584>>2]=1;i[a+4588>>0]=l;i[a+4589>>0]=1;i[a+4590>>0]=0;k[a+4592>>2]=0;r=g;return}function mh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4620>>0]=e&1;b=a+156|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);nh(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function nh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+172|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;a:do if(b){if(!(b>>>0>1431655765?(x=0,qa(178,C|0),B=x,x=0,B&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b*3|0)|0,B=x,x=0,!(B&1)):0){k[D>>2]=c;k[C>>2]=c;k[C+8>>2]=c+(b*3|0);while(1){i[c>>0]=0;i[c+1>>0]=0;i[c+2>>0]=0;c=(k[D>>2]|0)+3|0;k[D>>2]=c;b=b+-1|0;if(!b)break a}}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)f=19;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))f=17;if((f|0)==17?(d=y<<2,x=0,e=ta(67,d|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=e;f=e+(y<<2)|0;k[z+8>>2]=f;sw(e|0,0,d|0)|0;k[B>>2]=f;f=19;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){f=a+8|0;b:do if((k[f>>2]|0)>0){g=a+4596|0;h=ia(y,w)|0;j=h+1|0;l=a+4600|0;m=(y|0)>0;n=a+160|0;o=a+168|0;p=a+164|0;q=a+156|0;s=a+88|0;t=a+4592|0;u=0;c:while(1){d=k[C>>2]|0;c=d+3|0;k[g>>2]=c;d=d+(j*3|0)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];b=k[v>>2]|0;e=c+(b*3|0)|0;c=c+((b+-1|0)*3|0)|0;i[e>>0]=i[c>>0]|0;i[e+1>>0]=i[c+1>>0]|0;i[e+2>>0]=i[c+2>>0]|0;c=k[g>>2]|0;e=(k[l>>2]|0)+-3|0;i[e>>0]=i[c>>0]|0;i[e+1>>0]=i[c+1>>0]|0;i[e+2>>0]=i[c+2>>0]|0;x=0;ra(78,a|0,0);e=x;x=0;if(e&1){f=30;break c}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w*3|0)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w*3|0)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+(((k[q>>2]|0)-h|0)*3|0)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){f=31;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){f=43;break b}}if((f|0)==30){d=Wa()|0;break}else if((f|0)==31){d=Wa()|0;break}}else f=43;while(0);do if((f|0)==43){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}function oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;M=r;r=r+16|0;C=M+12|0;L=M+9|0;K=M+6|0;D=M+3|0;E=M;F=a+172|0;b=k[F>>2]|0;if((b|0)<=0){r=M;return}G=a+4600|0;H=a+4596|0;I=a+4604|0;J=a+4592|0;B=0;while(1){y=B+-1|0;d=k[G>>2]|0;e=d+(y*3|0)|0;N=k[H>>2]|0;c=B+1|0;f=l[N+(B*3|0)>>0]|0;A=k[I>>2]|0;g=l[N+(y*3|0)>>0]|0;h=f-g|0;j=l[e>>0]|0;m=g-j|0;n=((((i[A+((l[N+(c*3|0)>>0]|0)-f)>>0]|0)*9|0)+(i[A+h>>0]|0)|0)*9|0)+(i[A+m>>0]|0)|0;o=l[N+(B*3|0)+1>>0]|0;p=l[N+(y*3|0)+1>>0]|0;q=o-p|0;s=l[d+(y*3|0)+1>>0]|0;t=p-s|0;u=((((i[A+((l[N+(c*3|0)+1>>0]|0)-o)>>0]|0)*9|0)+(i[A+q>>0]|0)|0)*9|0)+(i[A+t>>0]|0)|0;v=l[N+(B*3|0)+2>>0]|0;w=l[N+(y*3|0)+2>>0]|0;x=v-w|0;y=l[d+(y*3|0)+2>>0]|0;z=w-y|0;A=((((i[A+((l[N+(c*3|0)+2>>0]|0)-v)>>0]|0)*9|0)+(i[A+x>>0]|0)|0)*9|0)+(i[A+z>>0]|0)|0;if(!(u|n|A)){i[K>>0]=i[e>>0]|0;i[K+1>>0]=i[e+1>>0]|0;i[K+2>>0]=i[e+2>>0]|0;i[C>>0]=i[e>>0]|0;i[C+1>>0]=i[e+1>>0]|0;i[C+2>>0]=i[e+2>>0]|0;b=ph(a,C,d+(B*3|0)|0,b-B|0)|0;c=b+B|0;if((c|0)!=(k[F>>2]|0)){N=(k[H>>2]|0)+(c*3|0)|0;i[E>>0]=i[N>>0]|0;i[E+1>>0]=i[N+1>>0]|0;i[E+2>>0]=i[N+2>>0]|0;N=k[G>>2]|0;i[L>>0]=i[K>>0]|0;i[L+1>>0]=i[K+1>>0]|0;i[L+2>>0]=i[K+2>>0]|0;i[C>>0]=i[E>>0]|0;i[C+1>>0]=i[E+1>>0]|0;i[C+2>>0]=i[E+2>>0]|0;qh(D,a,L,C);N=N+(c*3|0)|0;i[N>>0]=i[D>>0]|0;i[N+1>>0]=i[D+1>>0]|0;i[N+2>>0]=i[D+2>>0]|0;N=k[J>>2]|0;k[J>>2]=(N|0)<1?0:N+-1|0;b=b+1|0}c=b+B|0}else{d=l[d+(B*3|0)>>0]|0;b=f-j>>31;if((b^m|0)>=0)if((b^h|0)<0)b=j;else b=j-g+f|0;else b=f;f=rh(a,n,d,b,0)|0;d=l[(k[G>>2]|0)+(B*3|0)+1>>0]|0;b=o-s>>31;if((b^t|0)>=0)if((b^q|0)<0)b=s;else b=s-p+o|0;else b=o;d=rh(a,u,d,b,0)|0;e=l[(k[G>>2]|0)+(B*3|0)+2>>0]|0;b=v-y>>31;if((b^z|0)>=0)if((b^x|0)<0)b=y;else b=y-w+v|0;else b=v;A=rh(a,A,e,b,0)|0;N=(k[G>>2]|0)+(B*3|0)|0;i[N>>0]=f;i[N+1>>0]=d;i[N+2>>0]=A}b=k[F>>2]|0;if((c|0)>=(b|0))break;else B=c}r=M;return}function ph(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;h=a+112|0;j=a+108|0;l=a+4592|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[j>>2]|0;e=e+-1|0;k[h>>2]=e;k[j>>2]=g<<1;if((g|0)>=0){m=8;break}g=k[l>>2]|0;n=1<>2];o=d-f|0;o=(n|0)<(o|0)?n:o;f=o+f|0;if((o|0)==(n|0))k[l>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((m|0)==8)if((f|0)!=(d|0)){e=k[l>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);o=x;x=0;if(o&1){o=Wa()|0;Ua(e|0);fb(o|0)}else ub(e|0,824,96)}}else e=d;if((e|0)<=0)return e|0;f=0;do{o=c+(f*3|0)|0;i[o>>0]=i[b>>0]|0;i[o+1>>0]=i[b+1>>0]|0;i[o+2>>0]=i[b+2>>0]|0;f=f+1|0}while((f|0)!=(e|0));return e|0}function qh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;j=b+4568|0;o=sh(b,j)|0;g=sh(b,j)|0;j=sh(b,j)|0;f=b+128|0;e=l[d>>0]|0;m=k[b+136>>2]|0;n=m<<1|1;e=(ia(ia(n,o)|0,e-(l[c>>0]|0)>>31|1)|0)+e|0;o=0-m|0;if((e|0)>=(o|0)){f=k[f>>2]|0;if((f+m|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else{e=(ia(k[b+132>>2]|0,n)|0)+e|0;f=k[f>>2]|0}if((e&f|0)!=(e|0))e=f&~(e>>31);h=e&255;e=l[d+1>>0]|0;e=(ia(ia(n,g)|0,e-(l[c+1>>0]|0)>>31|1)|0)+e|0;if((e|0)>=(o|0)){if((f+m|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else e=(ia(k[b+132>>2]|0,n)|0)+e|0;if((e&f|0)!=(e|0))e=f&~(e>>31);g=e&255;e=l[d+2>>0]|0;e=(ia(ia(n,j)|0,e-(l[c+2>>0]|0)>>31|1)|0)+e|0;if((e|0)>=(o|0)){if((f+m|0)<(e|0))e=e-(ia(k[b+132>>2]|0,n)|0)|0}else e=(ia(k[b+132>>2]|0,n)|0)+e|0;if((e&f|0)==(e|0)){b=e;b=b&255;i[a>>0]=h;o=a+1|0;i[o>>0]=g;a=a+2|0;i[a>>0]=b;return}b=f&~(e>>31);b=b&255;i[a>>0]=h;o=a+1|0;i[o>>0]=g;a=a+2|0;i[a>>0]=b;return}function rh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;l=(r^b)-r|0;p=a+188+(l*12|0)+10|0;c=j[p>>1]|0;o=a+188+(l*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){b=5;while(1)if((c<>1]^r)-r+d|0;q=a+128|0;e=k[q>>2]|0;if((c&e|0)==(c|0))m=c;else m=e&~(c>>31);c=a+112|0;if((k[c>>2]|0)<8)qe(a);e=a+108|0;d=k[e>>2]|0;f=d>>>24;g=k[2832+(b<<11)+(f<<3)+4>>2]|0;if(!g){h=k[a+148>>2]|0;e=k[a+140>>2]|0;c=Tg(a)|0;if((c|0)<(h+-1-e|0)){if(b)c=(Ug(a,b)|0)+(c<>31^c>>1;if((((c|0)>-1?c:0-c|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(c|0);fb(a|0)}else ub(c|0,824,96)}}else{k[c>>2]=(k[c>>2]|0)-g;k[e>>2]=d<>2]|0}h=a+136|0;d=k[h>>2]|0;if(!b){if(!d)e=(k[a+188+(l*12|0)+4>>2]<<1)+-1+(j[p>>1]|0)>>31;else e=0;g=e^c}else g=c;b=k[a+152>>2]|0;e=(k[o>>2]|0)+((g|0)>-1?g:0-g|0)|0;f=a+188+(l*12|0)+4|0;c=(k[f>>2]|0)+(ia(d<<1|1,g)|0)|0;d=j[p>>1]|0;if((d|0)==(b|0)){e=e>>1;c=c>>1;d=b>>1}k[o>>2]=e;b=d+1|0;j[p>>1]=b;e=b+c|0;if((e|0)>=1){if((c|0)>0){c=c-b|0;p=j[n>>1]|0;j[n>>1]=(p<<16>>16<127&1)+(p&65535);c=(c|0)>0?0:c}}else{c=j[n>>1]|0;j[n>>1]=(c&65535)-(c<<16>>16>-128&1);c=(e|0)>(~d|0)?e:0-d|0}k[f>>2]=c;b=k[h>>2]|0;d=b<<1|1;e=(ia(d,(g^r)-r|0)|0)+m|0;if((e|0)>=(0-b|0)){c=k[q>>2]|0;if((c+b|0)<(e|0))e=e-(ia(k[a+132>>2]|0,d)|0)|0}else{e=(ia(k[a+132>>2]|0,d)|0)+e|0;c=k[q>>2]|0}if((e&c|0)==(e|0)){a=e;a=a&255;return a|0}a=c&~(e>>31);a=a&255;return a|0}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0;m=b+9|0;c=l[m>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;g=k[a+148>>2]|0;h=k[36476+(k[a+4592>>2]<<2)>>2]|0;c=k[a+140>>2]|0;e=Tg(a)|0;do if((e|0)<(g+-2-h-c|0))if(!d){d=k[f>>2]|0;a=d+e|0;c=a&1;a=(c+a|0)/2|0;j=8;break}else{h=(Ug(a,d)|0)+(e<>2]|0;e=h+d|0;g=e&1;c=g;f=1;e=(g+e|0)/2|0;break}else{e=(Ug(a,c)|0)+1|0;g=k[f>>2]|0;a=e+g|0;c=a&1;a=(c+a|0)/2|0;if(!d){d=g;j=8}else{h=e;f=1;e=a;d=g}}while(0);if((j|0)==8){h=e;f=l[b+10>>0]<<1>>>0>=(l[m>>0]|0)>>>0;e=a}e=(c|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(h+1-d>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[m>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){b=d;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[m>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=j;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}function th(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+136|0;a:do if(!(k[n>>2]|0)){c=k[a+128>>2]|0;b=a+144|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+176>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+180>>2]|0):0)?(k[d+12>>2]|0)==(k[a+184>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4604>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4604>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4604>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4604>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+144|0;while(0);m=1<>2];c=a+4608|0;d=m<<1;e=a+4612|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4604|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+184|0;j=a+180|0;g=a+176|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function uh(a){a=a|0;var b=0,c=0;k[a>>2]=35772;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function vh(a){a=a|0;var b=0,c=0;k[a>>2]=35772;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function wh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,65535,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+152>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+156>>2]=f;k[a+160>>2]=d;Fh(a);d=0;do{k[a+164+(d*12|0)>>2]=1024;k[a+164+(d*12|0)+4>>2]=0;j[a+164+(d*12|0)+8>>1]=0;j[a+164+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4544>>2]=1024;k[a+4548>>2]=0;i[a+4552>>0]=h;i[a+4553>>0]=1;i[a+4554>>0]=0;k[a+4556>>2]=1024;k[a+4560>>2]=1;i[a+4564>>0]=h;i[a+4565>>0]=1;i[a+4566>>0]=0;k[a+4568>>2]=0;r=e;return}function yh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4596>>0]=e&1;b=a+132|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);zh(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function zh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+148|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,C|0),B=x,x=0,B&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,B=x,x=0,!(B&1)):0){k[C>>2]=d;B=d+(b<<1)|0;k[C+8>>2]=B;sw(d|0,0,c|0)|0;k[D>>2]=B;break}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)g=18;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))g=16;if((g|0)==16?(e=y<<2,x=0,f=ta(67,e|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=f;g=f+(y<<2)|0;k[z+8>>2]=g;sw(f|0,0,e|0)|0;k[B>>2]=g;g=18;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+8|0;a:do if((k[f>>2]|0)>0){g=a+4572|0;h=ia(y,w)|0;i=h+1|0;l=a+4576|0;m=(y|0)>0;n=a+136|0;o=a+144|0;p=a+140|0;q=a+132|0;s=a+88|0;t=a+4568|0;u=0;b:while(1){d=k[C>>2]|0;c=d+2|0;k[g>>2]=c;d=d+(i<<1)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];e=k[v>>2]|0;j[c+(e<<1)>>1]=j[c+(e+-1<<1)>>1]|0;j[b+-2>>1]=j[c>>1]|0;x=0;ra(79,a|0,0);e=x;x=0;if(e&1){g=29;break b}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w<<1)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w<<1)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+((k[q>>2]|0)-h<<1)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){g=30;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){g=42;break a}}if((g|0)==29){d=Wa()|0;break}else if((g|0)==30){d=Wa()|0;break}}else g=42;while(0);do if((g|0)==42){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function Ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+4572|0;b=k[p>>2]|0;s=a+148|0;if((k[s>>2]|0)<=0)return;q=a+4576|0;r=a+4580|0;e=b;f=m[b+-2>>1]|0;b=m[b>>1]|0;o=0;while(1){n=k[q>>2]|0;l=m[n+(o+-1<<1)>>1]|0;d=o+1|0;c=m[e+(d<<1)>>1]|0;h=k[r>>2]|0;g=b-f|0;e=f-l|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(Ch(a,o,0)|0)+o|0;c=k[p>>2]|0;b=m[c+(d+-1<<1)>>1]|0;c=m[c+(d<<1)>>1]|0}else{f=b-l>>31;if((f^e|0)<0)e=b;else e=l+((f^g|0)<0?0:g)|0;n=Bh(a,h,m[n+(o<<1)>>1]|0,e,0)|0;j[(k[q>>2]|0)+(o<<1)>>1]=n}if((d|0)>=(k[s>>2]|0))break;e=k[p>>2]|0;f=b;b=c;o=d}return}function Bh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;m=(q^b)-q|0;p=a+164+(m*12|0)+10|0;c=j[p>>1]|0;o=a+164+(m*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){f=5;while(1)if((c<>1]^q)-q+d|0;if((c&65535|0)!=(c|0))c=c>>31&65535^65535;e=a+112|0;if((k[e>>2]|0)<8)qe(a);d=a+108|0;g=k[d>>2]|0;h=g>>>24;l=k[2832+(f<<11)+(h<<3)+4>>2]|0;if(!l){e=Tg(a)|0;if((e|0)<47){if(f)e=(Ug(a,f)|0)+(e<>31^e>>1;if((((e|0)>-1?e:0-e|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}else ub(c|0,824,96)}}else{k[e>>2]=(k[e>>2]|0)-l;k[d>>2]=g<>2]|0}l=a+164+(m*12|0)+4|0;d=k[l>>2]|0;if(!f){a=j[p>>1]|0;f=a;e=(d<<1)+-1+(a<<16>>16)>>31^e}else f=j[p>>1]|0;g=f<<16>>16==64;a=g&1;h=d+e>>a;g=g?32:f<<16>>16;k[o>>2]=((e|0)>-1?e:0-e|0)+(k[o>>2]|0)>>a;d=g+1|0;j[p>>1]=d;f=d+h|0;if((f|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(f|0)>(~g|0)?f:0-g|0;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&65535;return b|0}if((h|0)<=0){p=h;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&65535;return b|0}p=h-d|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&65535;return b|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+4576|0;e=k[f>>2]|0;c=j[e+(b+-1<<1)>>1]|0;g=a+148|0;e=Dh(a,c,e+(b<<1)|0,(k[g>>2]|0)-b|0)|0;d=e+b|0;if((d|0)==(k[g>>2]|0)){g=e;return g|0}c=c&65535;b=m[(k[a+4572>>2]|0)+(d<<1)>>1]|0;g=c-b|0;if((((g|0)>-1?g:0-g|0)|0)<1)c=(Eh(a,a+4556|0)|0)+c|0;else c=(ia(Eh(a,a+4544|0)|0,b-c>>31|1)|0)+b|0;j[(k[f>>2]|0)+(d<<1)>>1]=c;g=a+4568|0;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;g=e+1|0;return g|0}function Dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0;h=a+112|0;l=a+108|0;m=a+4568|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[l>>2]|0;e=e+-1|0;k[h>>2]=e;k[l>>2]=g<<1;if((g|0)>=0){n=8;break}g=k[m>>2]|0;o=1<>2];p=d-f|0;p=(o|0)<(p|0)?o:p;f=p+f|0;if((p|0)==(o|0))k[m>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((n|0)==8)if((f|0)!=(d|0)){e=k[m>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);p=x;x=0;if(p&1){p=Wa()|0;Ua(e|0);fb(p|0)}else ub(e|0,824,96)}}else e=d;if((e|0)>0)f=0;else return e|0;do{j[c+(f<<1)>>1]=b;f=f+1|0}while((f|0)!=(e|0));return e|0}function Eh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=b+9|0;c=l[h>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;e=k[36476+(k[a+4568>>2]<<2)>>2]|0;c=Tg(a)|0;do if((c|0)<(46-e|0))if(!d){a=k[f>>2]|0;e=a+c|0;d=e&1;e=(d+e|0)/2|0;g=8;break}else{c=(Ug(a,d)|0)+(c<>2]|0;e=c+a|0;j=e&1;d=j;f=1;e=(j+e|0)/2|0;break}else{c=(Ug(a,16)|0)+1|0;a=k[f>>2]|0;e=c+a|0;f=e&1;e=(f+e|0)/2|0;if(!d){d=f;g=8}else{d=f;f=1}}while(0);if((g|0)==8)f=l[b+10>>0]<<1>>>0>=(l[h>>0]|0)>>>0;e=(d|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(c+1-a>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[h>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){j=d;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[h>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}function Fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,65535,0);j=a+152|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+156>>2]|0):0)?(k[h+12>>2]|0)==(k[a+160>>2]|0):0){j=k[8909]|0;k[a+4580>>2]=j+(((k[8910]|0)-j|0)>>>1);r=l;return}c=a+4584|0;d=a+4588|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=131072){if(f>>>0>131072?(g=b+131072|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,131072-f|0);b=k[c>>2]|0}h=a+4580|0;k[h>>2]=b+65536;g=a+160|0;e=a+156|0;f=-65536;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==65536)break}r=l;return}function Gh(a){a=a|0;var b=0,c=0;k[a>>2]=35744;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Hh(a){a=a|0;var b=0,c=0;k[a>>2]=35744;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(37,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==16)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(38,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(39,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(40,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=2;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,4095,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+152>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+156>>2]=f;k[a+160>>2]=d;Rh(a);d=0;do{k[a+164+(d*12|0)>>2]=64;k[a+164+(d*12|0)+4>>2]=0;j[a+164+(d*12|0)+8>>1]=0;j[a+164+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4544>>2]=64;k[a+4548>>2]=0;i[a+4552>>0]=h;i[a+4553>>0]=1;i[a+4554>>0]=0;k[a+4556>>2]=64;k[a+4560>>2]=1;i[a+4564>>0]=h;i[a+4565>>0]=1;i[a+4566>>0]=0;k[a+4568>>2]=0;r=e;return}function Kh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4596>>0]=e&1;b=a+132|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);Lh(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function Lh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+148|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;do if(b){if(!((b|0)<0?(x=0,qa(178,C|0),B=x,x=0,B&1):0))g=6;if((g|0)==6?(c=b<<1,x=0,d=ta(67,c|0)|0,B=x,x=0,!(B&1)):0){k[C>>2]=d;B=d+(b<<1)|0;k[C+8>>2]=B;sw(d|0,0,c|0)|0;k[D>>2]=B;break}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)g=18;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))g=16;if((g|0)==16?(e=y<<2,x=0,f=ta(67,e|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=f;g=f+(y<<2)|0;k[z+8>>2]=g;sw(f|0,0,e|0)|0;k[B>>2]=g;g=18;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((g|0)==18){f=a+8|0;a:do if((k[f>>2]|0)>0){g=a+4572|0;h=ia(y,w)|0;i=h+1|0;l=a+4576|0;m=(y|0)>0;n=a+136|0;o=a+144|0;p=a+140|0;q=a+132|0;s=a+88|0;t=a+4568|0;u=0;b:while(1){d=k[C>>2]|0;c=d+2|0;k[g>>2]=c;d=d+(i<<1)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];e=k[v>>2]|0;j[c+(e<<1)>>1]=j[c+(e+-1<<1)>>1]|0;j[b+-2>>1]=j[c>>1]|0;x=0;ra(80,a|0,0);e=x;x=0;if(e&1){g=29;break b}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w<<1)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w<<1)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+((k[q>>2]|0)-h<<1)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){g=30;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){g=42;break a}}if((g|0)==29){d=Wa()|0;break}else if((g|0)==30){d=Wa()|0;break}}else g=42;while(0);do if((g|0)==42){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~((c+-2-b|0)>>>1)<<1);mj(b);fb(d|0)}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0;p=a+4572|0;b=k[p>>2]|0;s=a+148|0;if((k[s>>2]|0)<=0)return;q=a+4576|0;r=a+4580|0;e=b;f=m[b+-2>>1]|0;b=m[b>>1]|0;o=0;while(1){n=k[q>>2]|0;l=m[n+(o+-1<<1)>>1]|0;d=o+1|0;c=m[e+(d<<1)>>1]|0;h=k[r>>2]|0;g=b-f|0;e=f-l|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(Oh(a,o,0)|0)+o|0;c=k[p>>2]|0;b=m[c+(d+-1<<1)>>1]|0;c=m[c+(d<<1)>>1]|0}else{f=b-l>>31;if((f^e|0)<0)e=b;else e=l+((f^g|0)<0?0:g)|0;n=Nh(a,h,m[n+(o<<1)>>1]|0,e,0)|0;j[(k[q>>2]|0)+(o<<1)>>1]=n}if((d|0)>=(k[s>>2]|0))break;e=k[p>>2]|0;f=b;b=c;o=d}return}function Nh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;m=(q^b)-q|0;p=a+164+(m*12|0)+10|0;c=j[p>>1]|0;o=a+164+(m*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){f=5;while(1)if((c<>1]^q)-q+d|0;if((c&4095|0)!=(c|0))c=c>>31&4095^4095;e=a+112|0;if((k[e>>2]|0)<8)qe(a);d=a+108|0;g=k[d>>2]|0;h=g>>>24;l=k[2832+(f<<11)+(h<<3)+4>>2]|0;if(!l){e=Tg(a)|0;if((e|0)<35){if(f)e=(Ug(a,f)|0)+(e<>31^e>>1;if((((e|0)>-1?e:0-e|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}else ub(c|0,824,96)}}else{k[e>>2]=(k[e>>2]|0)-l;k[d>>2]=g<>2]|0}l=a+164+(m*12|0)+4|0;d=k[l>>2]|0;if(!f){a=j[p>>1]|0;f=a;e=(d<<1)+-1+(a<<16>>16)>>31^e}else f=j[p>>1]|0;g=f<<16>>16==64;a=g&1;h=d+e>>a;g=g?32:f<<16>>16;k[o>>2]=((e|0)>-1?e:0-e|0)+(k[o>>2]|0)>>a;d=g+1|0;j[p>>1]=d;f=d+h|0;if((f|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(f|0)>(~g|0)?f:0-g|0;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}if((h|0)<=0){p=h;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}p=h-d|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&4095;b=b&65535;return b|0}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+4576|0;e=k[f>>2]|0;c=j[e+(b+-1<<1)>>1]|0;g=a+148|0;e=Ph(a,c,e+(b<<1)|0,(k[g>>2]|0)-b|0)|0;d=e+b|0;if((d|0)==(k[g>>2]|0)){g=e;return g|0}c=c&65535;b=m[(k[a+4572>>2]|0)+(d<<1)>>1]|0;g=c-b|0;if((((g|0)>-1?g:0-g|0)|0)<1)c=(Qh(a,a+4556|0)|0)+c|0;else c=(ia(Qh(a,a+4544|0)|0,b-c>>31|1)|0)+b|0;j[(k[f>>2]|0)+(d<<1)>>1]=c&4095;g=a+4568|0;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;g=e+1|0;return g|0}function Ph(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0;h=a+112|0;l=a+108|0;m=a+4568|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[l>>2]|0;e=e+-1|0;k[h>>2]=e;k[l>>2]=g<<1;if((g|0)>=0){n=8;break}g=k[m>>2]|0;o=1<>2];p=d-f|0;p=(o|0)<(p|0)?o:p;f=p+f|0;if((p|0)==(o|0))k[m>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((n|0)==8)if((f|0)!=(d|0)){e=k[m>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);p=x;x=0;if(p&1){p=Wa()|0;Ua(e|0);fb(p|0)}else ub(e|0,824,96)}}else e=d;if((e|0)>0)f=0;else return e|0;do{j[c+(f<<1)>>1]=b;f=f+1|0}while((f|0)!=(e|0));return e|0}function Qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=b+9|0;c=l[h>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;e=k[36476+(k[a+4568>>2]<<2)>>2]|0;c=Tg(a)|0;do if((c|0)<(34-e|0))if(!d){a=k[f>>2]|0;e=a+c|0;d=e&1;e=(d+e|0)/2|0;g=8;break}else{c=(Ug(a,d)|0)+(c<>2]|0;e=c+a|0;j=e&1;d=j;f=1;e=(j+e|0)/2|0;break}else{c=(Ug(a,12)|0)+1|0;a=k[f>>2]|0;e=c+a|0;f=e&1;e=(f+e|0)/2|0;if(!d){d=f;g=8}else{d=f;f=1}}while(0);if((g|0)==8)f=l[b+10>>0]<<1>>>0>=(l[h>>0]|0)>>>0;e=(d|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(c+1-a>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[h>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){j=d;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[h>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}function Rh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,4095,0);j=a+152|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+156>>2]|0):0)?(k[h+12>>2]|0)==(k[a+160>>2]|0):0){j=k[8906]|0;k[a+4580>>2]=j+(((k[8907]|0)-j|0)>>>1);r=l;return}c=a+4584|0;d=a+4588|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=8192){if(f>>>0>8192?(g=b+8192|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,8192-f|0);b=k[c>>2]|0}h=a+4580|0;k[h>>2]=b+4096;g=a+160|0;e=a+156|0;f=-4096;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==4096)break}r=l;return}function Sh(a){a=a|0;var b=0,c=0;k[a>>2]=35716;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function Th(a){a=a|0;var b=0,c=0;k[a>>2]=35716;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function Vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,255,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+152>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+156>>2]=f;k[a+160>>2]=d;bi(a);d=0;do{k[a+164+(d*12|0)>>2]=4;k[a+164+(d*12|0)+4>>2]=0;j[a+164+(d*12|0)+8>>1]=0;j[a+164+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4544>>2]=4;k[a+4548>>2]=0;i[a+4552>>0]=h;i[a+4553>>0]=1;i[a+4554>>0]=0;k[a+4556>>2]=4;k[a+4560>>2]=1;i[a+4564>>0]=h;i[a+4565>>0]=1;i[a+4566>>0]=0;k[a+4568>>2]=0;r=e;return}function Wh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4596>>0]=e&1;b=a+132|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);Xh(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function Xh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+148|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;a:do if(b){if(!((b|0)<0?(x=0,qa(178,C|0),B=x,x=0,B&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b|0)|0,B=x,x=0,!(B&1)):0){k[D>>2]=c;k[C>>2]=c;k[C+8>>2]=c+b;while(1){i[c>>0]=0;c=(k[D>>2]|0)+1|0;k[D>>2]=c;b=b+-1|0;if(!b)break a}}c=Wa()|0;b=k[C>>2]|0;if(!b)fb(c|0);if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);fb(c|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)f=19;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))f=17;if((f|0)==17?(d=y<<2,x=0,e=ta(67,d|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=e;f=e+(y<<2)|0;k[z+8>>2]=f;sw(e|0,0,d|0)|0;k[B>>2]=f;f=19;break}c=Wa()|0;b=k[z>>2]|0;d=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){f=a+8|0;b:do if((k[f>>2]|0)>0){g=a+4572|0;h=ia(y,w)|0;j=h+1|0;l=a+4576|0;m=(y|0)>0;n=a+136|0;o=a+144|0;p=a+140|0;q=a+132|0;s=a+88|0;t=a+4568|0;u=0;c:while(1){d=k[C>>2]|0;c=d+1|0;k[g>>2]=c;d=d+j|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];e=k[v>>2]|0;i[c+e>>0]=i[c+(e+-1)>>0]|0;i[(k[l>>2]|0)+-1>>0]=i[k[g>>2]>>0]|0;x=0;ra(81,a|0,0);e=x;x=0;if(e&1){f=30;break c}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+w|0;k[g>>2]=c;b=(k[l>>2]|0)+w|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+((k[q>>2]|0)-h)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){f=31;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){f=43;break b}}if((f|0)==30){c=Wa()|0;break}else if((f|0)==31){c=Wa()|0;break}}else f=43;while(0);do if((f|0)==43){x=0;qa(183,a|0);a=x;x=0;if(a&1){c=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);r=A;return}while(0);b=k[z>>2]|0;d=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(c|0);if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);fb(c|0)}function Yh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+4572|0;b=k[o>>2]|0;r=a+148|0;if((k[r>>2]|0)<=0)return;p=a+4576|0;q=a+4580|0;e=b;f=l[b+-1>>0]|0;b=l[b>>0]|0;n=0;while(1){m=k[p>>2]|0;j=l[m+(n+-1)>>0]|0;d=n+1|0;c=l[e+d>>0]|0;h=k[q>>2]|0;g=b-f|0;e=f-j|0;h=((((i[h+(c-b)>>0]|0)*9|0)+(i[h+g>>0]|0)|0)*9|0)+(i[h+e>>0]|0)|0;if(!h){d=(_h(a,n,0)|0)+n|0;c=k[o>>2]|0;b=l[c+(d+-1)>>0]|0;c=l[c+d>>0]|0}else{f=b-j>>31;if((f^e|0)<0)e=b;else e=j+((f^g|0)<0?0:g)|0;m=Zh(a,h,l[m+n>>0]|0,e,0)|0;i[(k[p>>2]|0)+n>>0]=m}if((d|0)>=(k[r>>2]|0))break;e=k[o>>2]|0;f=b;b=c;n=d}return}function Zh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;m=(q^b)-q|0;p=a+164+(m*12|0)+10|0;c=j[p>>1]|0;o=a+164+(m*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){f=5;while(1)if((c<>1]^q)-q+d|0;if((c&255|0)!=(c|0))c=c>>31&255^255;e=a+112|0;if((k[e>>2]|0)<8)qe(a);d=a+108|0;g=k[d>>2]|0;h=g>>>24;l=k[2832+(f<<11)+(h<<3)+4>>2]|0;if(!l){e=Tg(a)|0;if((e|0)<23){if(f)e=(Ug(a,f)|0)+(e<>31^e>>1;if((((e|0)>-1?e:0-e|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}else ub(c|0,824,96)}}else{k[e>>2]=(k[e>>2]|0)-l;k[d>>2]=g<>2]|0}l=a+164+(m*12|0)+4|0;d=k[l>>2]|0;if(!f){a=j[p>>1]|0;f=a;e=(d<<1)+-1+(a<<16>>16)>>31^e}else f=j[p>>1]|0;g=f<<16>>16==64;a=g&1;h=d+e>>a;g=g?32:f<<16>>16;k[o>>2]=((e|0)>-1?e:0-e|0)+(k[o>>2]|0)>>a;d=g+1|0;j[p>>1]=d;f=d+h|0;if((f|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(f|0)>(~g|0)?f:0-g|0;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}if((h|0)<=0){p=h;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}p=h-d|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}function _h(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+4576|0;e=k[f>>2]|0;c=i[e+(b+-1)>>0]|0;g=a+148|0;e=$h(a,c,e+b|0,(k[g>>2]|0)-b|0)|0;d=e+b|0;if((d|0)==(k[g>>2]|0)){g=e;return g|0}c=c&255;b=l[(k[a+4572>>2]|0)+d>>0]|0;g=c-b|0;if((((g|0)>-1?g:0-g|0)|0)<1)c=(ai(a,a+4556|0)|0)+c|0;else c=(ia(ai(a,a+4544|0)|0,b-c>>31|1)|0)+b|0;i[(k[f>>2]|0)+d>>0]=c;g=a+4568|0;a=k[g>>2]|0;k[g>>2]=(a|0)<1?0:a+-1|0;g=e+1|0;return g|0}function $h(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;h=a+112|0;j=a+108|0;l=a+4568|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[j>>2]|0;e=e+-1|0;k[h>>2]=e;k[j>>2]=g<<1;if((g|0)>=0){m=8;break}g=k[l>>2]|0;n=1<>2];o=d-f|0;o=(n|0)<(o|0)?n:o;f=o+f|0;if((o|0)==(n|0))k[l>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((m|0)==8)if((f|0)!=(d|0)){e=k[l>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);o=x;x=0;if(o&1){o=Wa()|0;Ua(e|0);fb(o|0)}else ub(e|0,824,96)}}else e=d;if((e|0)<=0)return e|0;sw(c|0,b|0,e|0)|0;return e|0}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=b+9|0;c=l[h>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;e=k[36476+(k[a+4568>>2]<<2)>>2]|0;c=Tg(a)|0;do if((c|0)<(22-e|0))if(!d){a=k[f>>2]|0;e=a+c|0;d=e&1;e=(d+e|0)/2|0;g=8;break}else{c=(Ug(a,d)|0)+(c<>2]|0;e=c+a|0;j=e&1;d=j;f=1;e=(j+e|0)/2|0;break}else{c=(Ug(a,8)|0)+1|0;a=k[f>>2]|0;e=c+a|0;f=e&1;e=(f+e|0)/2|0;if(!d){d=f;g=8}else{d=f;f=1}}while(0);if((g|0)==8)f=l[b+10>>0]<<1>>>0>=(l[h>>0]|0)>>>0;e=(d|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(c+1-a>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[h>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){j=d;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[h>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}function bi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,255,0);j=a+152|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+156>>2]|0):0)?(k[h+12>>2]|0)==(k[a+160>>2]|0):0){j=k[8900]|0;k[a+4580>>2]=j+(((k[8901]|0)-j|0)>>>1);r=l;return}c=a+4584|0;d=a+4588|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=512){if(f>>>0>512?(g=b+512|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,512-f|0);b=k[c>>2]|0}h=a+4580|0;k[h>>2]=b+256;g=a+160|0;e=a+156|0;f=-256;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==256)break}r=l;return}function ci(a){a=a|0;var b=0,c=0;k[a>>2]=35688;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function di(a){a=a|0;var b=0,c=0;k[a>>2]=35688;b=k[a+4584>>2]|0;if(b){c=a+4588|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=3;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+32|0;h=e;Oi(h,255,0);g=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[h+8>>2]|0:f;d=k[b+12>>2]|0;d=(d|0)==0?k[h+12>>2]|0:d;b=k[b+16>>2]|0;c=k[h+16>>2]|0;k[a+152>>2]=(g|0)==0?k[h+4>>2]|0:g;k[a+156>>2]=f;k[a+160>>2]=d;ni(a);d=0;do{k[a+164+(d*12|0)>>2]=4;k[a+164+(d*12|0)+4>>2]=0;j[a+164+(d*12|0)+8>>1]=0;j[a+164+(d*12|0)+10>>1]=1;d=d+1|0}while((d|0)!=365);h=((b|0)==0?c:b)&255;k[a+4544>>2]=4;k[a+4548>>2]=0;i[a+4552>>0]=h;i[a+4553>>0]=1;i[a+4554>>0]=0;k[a+4556>>2]=4;k[a+4560>>2]=1;i[a+4564>>0]=h;i[a+4565>>0]=1;i[a+4566>>0]=0;k[a+4568>>2]=0;r=e;return}function gi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4596>>0]=e&1;b=a+132|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);hi(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function hi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;v=a+148|0;w=(k[v>>2]|0)+4|0;if((k[a+28>>2]|0)==1)y=k[a+20>>2]|0;else y=1;b=ia(y<<1,w)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;a:do if(b){if(!(b>>>0>1431655765?(x=0,qa(178,C|0),B=x,x=0,B&1):0))f=6;if((f|0)==6?(x=0,c=ta(67,b*3|0)|0,B=x,x=0,!(B&1)):0){k[D>>2]=c;k[C>>2]=c;k[C+8>>2]=c+(b*3|0);while(1){i[c>>0]=0;i[c+1>>0]=0;i[c+2>>0]=0;c=(k[D>>2]|0)+3|0;k[D>>2]=c;b=b+-1|0;if(!b)break a}}d=Wa()|0;b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!y)f=19;else{if(!(y>>>0>1073741823?(x=0,qa(178,z|0),u=x,x=0,u&1):0))f=17;if((f|0)==17?(d=y<<2,x=0,e=ta(67,d|0)|0,u=x,x=0,!(u&1)):0){k[z>>2]=e;f=e+(y<<2)|0;k[z+8>>2]=f;sw(e|0,0,d|0)|0;k[B>>2]=f;f=19;break}d=Wa()|0;b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}while(0);if((f|0)==19){f=a+8|0;b:do if((k[f>>2]|0)>0){g=a+4572|0;h=ia(y,w)|0;j=h+1|0;l=a+4576|0;m=(y|0)>0;n=a+136|0;o=a+144|0;p=a+140|0;q=a+132|0;s=a+88|0;t=a+4568|0;u=0;c:while(1){d=k[C>>2]|0;c=d+3|0;k[g>>2]=c;d=d+(j*3|0)|0;k[l>>2]=d;if(!(u&1))b=d;else{k[g>>2]=d;k[l>>2]=c;b=c;c=d}if(m){e=k[z>>2]|0;d=0;do{k[t>>2]=k[e+(d<<2)>>2];b=k[v>>2]|0;e=c+(b*3|0)|0;c=c+((b+-1|0)*3|0)|0;i[e>>0]=i[c>>0]|0;i[e+1>>0]=i[c+1>>0]|0;i[e+2>>0]=i[c+2>>0]|0;c=k[g>>2]|0;e=(k[l>>2]|0)+-3|0;i[e>>0]=i[c>>0]|0;i[e+1>>0]=i[c+1>>0]|0;i[e+2>>0]=i[c+2>>0]|0;x=0;ra(82,a|0,0);e=x;x=0;if(e&1){f=30;break c}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[t>>2];c=(k[g>>2]|0)+(w*3|0)|0;k[g>>2]=c;b=(k[l>>2]|0)+(w*3|0)|0;k[l>>2]=b;d=d+1|0}while((d|0)<(y|0))}e=k[n>>2]|0;if(((e|0)<=(u|0)?(u|0)<((k[o>>2]|0)+e|0):0)?(e=k[s>>2]|0,x=0,Ja(k[(k[e>>2]|0)+8>>2]|0,e|0,b+(((k[q>>2]|0)-h|0)*3|0)|0,k[p>>2]|0,w|0),e=x,x=0,e&1):0){f=31;break}u=u+1|0;if((u|0)>=(k[f>>2]|0)){f=43;break b}}if((f|0)==30){d=Wa()|0;break}else if((f|0)==31){d=Wa()|0;break}}else f=43;while(0);do if((f|0)==43){x=0;qa(183,a|0);a=x;x=0;if(a&1){d=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);r=A;return}while(0);b=k[z>>2]|0;c=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-c|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(d|0);c=k[D>>2]|0;if((c|0)!=(b|0))k[D>>2]=c+(~(((c+-3-b|0)>>>0)/3|0)*3|0);mj(b);fb(d|0)}function ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=a+148|0;if((k[A>>2]|0)<=0)return;B=a+4576|0;C=a+4572|0;D=a+4580|0;z=0;while(1){w=z+-1|0;f=k[B>>2]|0;g=k[C>>2]|0;b=z+1|0;e=l[g+(z*3|0)>>0]|0;y=k[D>>2]|0;h=l[g+(w*3|0)>>0]|0;j=e-h|0;m=l[f+(w*3|0)>>0]|0;n=h-m|0;o=((((i[y+((l[g+(b*3|0)>>0]|0)-e)>>0]|0)*9|0)+(i[y+j>>0]|0)|0)*9|0)+(i[y+n>>0]|0)|0;d=l[g+(z*3|0)+1>>0]|0;p=l[g+(w*3|0)+1>>0]|0;q=d-p|0;r=l[f+(w*3|0)+1>>0]|0;s=p-r|0;t=((((i[y+((l[g+(b*3|0)+1>>0]|0)-d)>>0]|0)*9|0)+(i[y+q>>0]|0)|0)*9|0)+(i[y+s>>0]|0)|0;c=l[g+(z*3|0)+2>>0]|0;u=l[g+(w*3|0)+2>>0]|0;v=c-u|0;w=l[f+(w*3|0)+2>>0]|0;x=u-w|0;y=((((i[y+((l[g+(b*3|0)+2>>0]|0)-c)>>0]|0)*9|0)+(i[y+v>>0]|0)|0)*9|0)+(i[y+x>>0]|0)|0;if(!(t|o|y))b=(ji(a,z,0)|0)+z|0;else{g=l[f+(z*3|0)>>0]|0;f=e-m>>31;if((f^n|0)>=0)if((f^j|0)<0)e=m;else e=m-h+e|0;g=ki(a,o,g,e,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+1>>0]|0;e=d-r>>31;if((e^s|0)>=0)if((e^q|0)<0)d=r;else d=r-p+d|0;e=ki(a,t,f,d,0)|0;f=l[(k[B>>2]|0)+(z*3|0)+2>>0]|0;d=c-w>>31;if((d^x|0)>=0)if((d^v|0)<0)c=w;else c=w-u+c|0;y=ki(a,y,f,c,0)|0;z=(k[B>>2]|0)+(z*3|0)|0;i[z>>0]=g;i[z+1>>0]=e;i[z+2>>0]=y}if((b|0)<(k[A>>2]|0))z=b;else break}return}function ji(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;j=r;r=r+16|0;m=j+3|0;n=j;f=a+4576|0;c=k[f>>2]|0;d=c+((b+-1|0)*3|0)|0;g=i[d>>0]|0;h=i[d+1>>0]|0;d=i[d+2>>0]|0;i[n>>0]=g;i[n+1>>0]=h;i[n+2>>0]=d;l=a+148|0;e=(k[l>>2]|0)-b|0;i[m>>0]=i[n>>0]|0;i[m+1>>0]=i[n+1>>0]|0;i[m+2>>0]=i[n+2>>0]|0;e=li(a,m,c+(b*3|0)|0,e)|0;c=e+b|0;if((c|0)==(k[l>>2]|0)){n=e;r=j;return n|0}m=(k[a+4572>>2]|0)+(c*3|0)|0;b=i[m>>0]|0;l=i[m+1>>0]|0;m=i[m+2>>0]|0;n=k[f>>2]|0;f=a+4544|0;p=mi(a,f)|0;o=mi(a,f)|0;b=b&255;b=(ia(b-(g&255)>>31|1,p)|0)+b&255;l=l&255;l=(ia(l-(h&255)>>31|1,o)|0)+l&255;m=m&255;m=(ia(m-(d&255)>>31|1,mi(a,f)|0)|0)+m&255;n=n+(c*3|0)|0;i[n>>0]=b;i[n+1>>0]=l;i[n+2>>0]=m;n=a+4568|0;m=k[n>>2]|0;k[n>>2]=(m|0)<1?0:m+-1|0;n=e+1|0;r=j;return n|0}function ki(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=b>>31;m=(q^b)-q|0;p=a+164+(m*12|0)+10|0;c=j[p>>1]|0;o=a+164+(m*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){f=5;while(1)if((c<>1]^q)-q+d|0;if((c&255|0)!=(c|0))c=c>>31&255^255;e=a+112|0;if((k[e>>2]|0)<8)qe(a);d=a+108|0;g=k[d>>2]|0;h=g>>>24;l=k[2832+(f<<11)+(h<<3)+4>>2]|0;if(!l){e=Tg(a)|0;if((e|0)<23){if(f)e=(Ug(a,f)|0)+(e<>31^e>>1;if((((e|0)>-1?e:0-e|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}else ub(c|0,824,96)}}else{k[e>>2]=(k[e>>2]|0)-l;k[d>>2]=g<>2]|0}l=a+164+(m*12|0)+4|0;d=k[l>>2]|0;if(!f){a=j[p>>1]|0;f=a;e=(d<<1)+-1+(a<<16>>16)>>31^e}else f=j[p>>1]|0;g=f<<16>>16==64;a=g&1;h=d+e>>a;g=g?32:f<<16>>16;k[o>>2]=((e|0)>-1?e:0-e|0)+(k[o>>2]|0)>>a;d=g+1|0;j[p>>1]=d;f=d+h|0;if((f|0)<1){p=j[n>>1]|0;j[n>>1]=(p&65535)-(p<<16>>16>-128&1);p=(f|0)>(~g|0)?f:0-g|0;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}if((h|0)<=0){p=h;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}p=h-d|0;o=j[n>>1]|0;j[n>>1]=(o<<16>>16<127&1)+(o&65535);p=(p|0)>0?0:p;k[l>>2]=p;q=e^q;b=b>>>31;b=c+b|0;b=b+q|0;b=b&255;return b|0}function li(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;h=a+112|0;j=a+108|0;l=a+4568|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[j>>2]|0;e=e+-1|0;k[h>>2]=e;k[j>>2]=g<<1;if((g|0)>=0){m=8;break}g=k[l>>2]|0;n=1<>2];o=d-f|0;o=(n|0)<(o|0)?n:o;f=o+f|0;if((o|0)==(n|0))k[l>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((m|0)==8)if((f|0)!=(d|0)){e=k[l>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);o=x;x=0;if(o&1){o=Wa()|0;Ua(e|0);fb(o|0)}else ub(e|0,824,96)}}else e=d;if((e|0)<=0)return e|0;f=0;do{o=c+(f*3|0)|0;i[o>>0]=i[b>>0]|0;i[o+1>>0]=i[b+1>>0]|0;i[o+2>>0]=i[b+2>>0]|0;f=f+1|0}while((f|0)!=(e|0));return e|0}function mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=b+9|0;c=l[h>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;e=k[36476+(k[a+4568>>2]<<2)>>2]|0;c=Tg(a)|0;do if((c|0)<(22-e|0))if(!d){a=k[f>>2]|0;e=a+c|0;d=e&1;e=(d+e|0)/2|0;g=8;break}else{c=(Ug(a,d)|0)+(c<>2]|0;e=c+a|0;j=e&1;d=j;f=1;e=(j+e|0)/2|0;break}else{c=(Ug(a,8)|0)+1|0;a=k[f>>2]|0;e=c+a|0;f=e&1;e=(f+e|0)/2|0;if(!d){d=f;g=8}else{d=f;f=1}}while(0);if((g|0)==8)f=l[b+10>>0]<<1>>>0>=(l[h>>0]|0)>>>0;e=(d|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(c+1-a>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[h>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){j=d;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[h>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;j=j&255;j=j+1|0;j=j&255;i[h>>0]=j;return e|0}\nfunction Vp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+128|0;f=m;o=m+116|0;p=m+104|0;h=m+20|0;l=m+16|0;j=m+12|0;n=m+8|0;g=m+4|0;i[o>>0]=i[58887]|0;i[o+1>>0]=i[58888]|0;i[o+2>>0]=i[58889]|0;i[o+3>>0]=i[58890]|0;i[o+4>>0]=i[58891]|0;i[o+5>>0]=i[58892]|0;Ep(o+1|0,58893,0,k[c+4>>2]|0);a=fp()|0;k[f>>2]=e;e=p+(av(p,12,a,o,f)|0)|0;o=Fp(p,e,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(3,p|0,o|0,e|0,h|0,l|0,j|0,n|0);e=x;x=0;if(e&1){p=Wa()|0;zm(a)|0;fb(p|0)}else{zm(a)|0;k[g>>2]=k[b>>2];o=k[l>>2]|0;p=k[j>>2]|0;k[f>>2]=k[g>>2];p=cv(f,h,o,p,c,d)|0;r=m;return p|0}return 0}function Wp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;m=r;r=r+240|0;g=m+8|0;a=m;o=m+204|0;i=m+32|0;l=m+28|0;j=m+24|0;n=m+20|0;h=m+16|0;p=a;k[p>>2]=37;k[p+4>>2]=0;Ep(a+1|0,58895,0,k[c+4>>2]|0);p=fp()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=o+(av(o,23,p,a,g)|0)|0;e=Fp(o,f,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(3,o|0,e|0,f|0,i|0,l|0,j|0,n|0);f=x;x=0;if(f&1){q=Wa()|0;zm(a)|0;fb(q|0)}else{zm(a)|0;k[h>>2]=k[b>>2];p=k[l>>2]|0;q=k[j>>2]|0;k[g>>2]=k[h>>2];q=cv(g,i,p,q,c,d)|0;r=m;return q|0}return 0}function Xp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;z=r;r=r+352|0;t=z+312|0;n=z+48|0;m=z+32|0;i=z+24|0;f=z+8|0;l=z;q=z+316|0;s=z+80|0;h=z+84|0;y=z+76|0;w=z+72|0;u=z+68|0;v=z+64|0;j=l;k[j>>2]=37;k[j+4>>2]=0;j=Lp(l+1|0,58898,k[c+4>>2]|0)|0;k[s>>2]=q;a=fp()|0;if(j){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;f=av(q,30,a,l,f)|0}else{p[i>>3]=e;f=av(q,30,a,l,i)|0}a:do if((f|0)>29){x=0;a=Da(3)|0;f=x;x=0;f=f&1;if(j){if(!f?(x=0,k[m>>2]=k[c+8>>2],p[m+8>>3]=e,g=Ea(17,s|0,a|0,l|0,m|0)|0,o=x,x=0,!(o&1)):0)A=12}else if(!f?(x=0,k[n>>2]=k[c+8>>2],p[n+8>>3]=e,o=Ea(17,s|0,a|0,l|0,n|0)|0,n=x,x=0,!(n&1)):0){g=o;A=12}do if((A|0)==12){a=k[s>>2]|0;if(!a){x=0;Ga(6);o=x;x=0;if(o&1)break;f=k[s>>2]|0}else f=a;a=f;l=f;A=16;break a}while(0);a=Wa()|0}else{a=k[s>>2]|0;l=0;g=f;A=16}while(0);if((A|0)==16){i=a+g|0;j=Fp(a,i,c)|0;do if((a|0)==(q|0)){a=q;f=0;A=22}else{g=Pl(g<<3)|0;if(!g){x=0;Ga(6);A=x;x=0;if(A&1){f=0;A=20;break}a=k[s>>2]|0}f=g;h=g;A=22}while(0);do if((A|0)==22){x=0;g=ta(68,c|0)|0;s=x;x=0;if(!(s&1)){k[u>>2]=g;x=0;ya(4,a|0,j|0,i|0,h|0,y|0,w|0,u|0);u=x;x=0;if(u&1){a=Wa()|0;zm(g)|0;break}zm(g)|0;k[v>>2]=k[b>>2];A=k[y>>2]|0;a=k[w>>2]|0;x=0;k[t>>2]=k[v>>2];a=sa(40,t|0,h|0,A|0,a|0,c|0,d|0)|0;A=x;x=0;if(!(A&1)){k[b>>2]=a;if(f)Ql(f);if(l)Ql(l);r=z;return a|0}else A=20}else A=20}while(0);if((A|0)==20)a=Wa()|0;if(f)Ql(f);if(l)Ql(l)}fb(a|0);return 0}function Yp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;y=r;r=r+16|0;z=y;w=Ss(g,44212)|0;u=Ss(g,44368)|0;Mb[k[(k[u>>2]|0)+20>>2]&127](z,u);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{x=0;g=Aa(k[(k[w>>2]|0)+44>>2]|0,w|0,g|0)|0;v=x;x=0;if(v&1)t=8;else{l=k[f>>2]|0;k[f>>2]=l+4;k[l>>2]=g;l=a+1|0;t=10}break}default:{l=a;t=10}}a:do if((t|0)==10){v=c;b:do if((v-l|0)>1?(i[l>>0]|0)==48:0){h=l+1|0;switch(i[h>>0]|0){case 88:case 120:break;default:{t=11;break b}}x=0;g=Aa(k[(k[w>>2]|0)+44>>2]|0,w|0,48)|0;s=x;x=0;if(s&1){t=8;break a}s=k[f>>2]|0;k[f>>2]=s+4;k[s>>2]=g;l=l+2|0;x=0;g=Aa(k[(k[w>>2]|0)+44>>2]|0,w|0,i[h>>0]|0)|0;s=x;x=0;if(s&1){t=8;break a}s=k[f>>2]|0;k[f>>2]=s+4;k[s>>2]=g;if(l>>>0>>0){g=l;while(1){h=i[g>>0]|0;x=0;j=Da(3)|0;s=x;x=0;if(s&1)break;x=0;h=Aa(39,h<<24>>24|0,j|0)|0;s=x;x=0;if(s&1)break;if(!h){s=l;break b}g=g+1|0;if(g>>>0>=c>>>0){s=l;break b}}g=Wa()|0;break a}else{s=l;g=l}}else t=11;while(0);c:do if((t|0)==11)if(l>>>0>>0){g=l;while(1){h=i[g>>0]|0;x=0;j=Da(3)|0;s=x;x=0;if(s&1)break;x=0;h=Aa(40,h<<24>>24|0,j|0)|0;s=x;x=0;if(s&1)break;if(!h){s=l;break c}g=g+1|0;if(g>>>0>=c>>>0){s=l;break c}}g=Wa()|0;break a}else{s=l;g=l}while(0);p=i[z>>0]|0;q=z+4|0;if(((p&1)==0?(p&255)>>>1:k[q>>2]|0)|0){if((s|0)!=(g|0)?(m=g+-1|0,s>>>0>>0):0){j=s;h=m;do{p=i[j>>0]|0;i[j>>0]=i[h>>0]|0;i[h>>0]=p;j=j+1|0;h=h+-1|0}while(j>>>0>>0)}x=0;m=ta(k[(k[u>>2]|0)+16>>2]|0,u|0)|0;p=x;x=0;if(p&1){t=8;break}n=z+8|0;o=z+1|0;d:do if(s>>>0>>0){h=0;j=0;p=s;while(1){l=i[((i[z>>0]&1)==0?o:k[n>>2]|0)+j>>0]|0;if(l<<24>>24>0&(h|0)==(l<<24>>24|0)){h=k[f>>2]|0;k[f>>2]=h+4;k[h>>2]=m;h=i[z>>0]|0;l=0;j=(j>>>0<(((h&1)==0?(h&255)>>>1:k[q>>2]|0)+-1|0)>>>0&1)+j|0}else l=h;x=0;h=Aa(k[(k[w>>2]|0)+44>>2]|0,w|0,i[p>>0]|0)|0;A=x;x=0;if(A&1)break;A=k[f>>2]|0;k[f>>2]=A+4;k[A>>2]=h;p=p+1|0;if(p>>>0>=g>>>0)break d;else h=l+1|0}g=Wa()|0;break a}while(0);h=d+(s-a<<2)|0;l=k[f>>2]|0;if((h|0)!=(l|0)){j=l+-4|0;if(h>>>0>>0){do{A=k[h>>2]|0;k[h>>2]=k[j>>2];k[j>>2]=A;h=h+4|0;j=j+-4|0}while(h>>>0>>0);m=w;h=l}else{m=w;h=l}}else m=w}else{x=0;Ea(k[(k[w>>2]|0)+48>>2]|0,w|0,s|0,g|0,k[f>>2]|0)|0;A=x;x=0;if(A&1){t=8;break}h=(k[f>>2]|0)+(g-s<<2)|0;k[f>>2]=h;m=w}e:do if(g>>>0>>0){while(1){h=i[g>>0]|0;if(h<<24>>24==46){j=g;break}x=0;j=Aa(k[(k[m>>2]|0)+44>>2]|0,w|0,h|0)|0;A=x;x=0;if(A&1){t=4;break}A=k[f>>2]|0;h=A+4|0;k[f>>2]=h;k[A>>2]=j;g=g+1|0;if(g>>>0>=c>>>0)break e}if((t|0)==4){g=Wa()|0;break a}x=0;g=ta(k[(k[u>>2]|0)+12>>2]|0,u|0)|0;A=x;x=0;if(A&1){t=8;break a}A=k[f>>2]|0;h=A+4|0;k[f>>2]=h;k[A>>2]=g;g=j+1|0}while(0);x=0;Ea(k[(k[w>>2]|0)+48>>2]|0,w|0,g|0,c|0,h|0)|0;A=x;x=0;if(A&1)t=8;else{A=(k[f>>2]|0)+(v-g<<2)|0;k[f>>2]=A;k[e>>2]=(b|0)==(c|0)?A:d+(b-a<<2)|0;Sm(z);r=y;return}}while(0);if((t|0)==8)g=Wa()|0;Sm(z);fb(g|0)}function Zp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;z=r;r=r+352|0;t=z+304|0;n=z+48|0;m=z+32|0;i=z+24|0;f=z+8|0;l=z;q=z+308|0;s=z+72|0;h=z+76|0;y=z+68|0;w=z+64|0;u=z+60|0;v=z+56|0;j=l;k[j>>2]=37;k[j+4>>2]=0;j=Lp(l+1|0,58899,k[c+4>>2]|0)|0;k[s>>2]=q;a=fp()|0;if(j){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;f=av(q,30,a,l,f)|0}else{p[i>>3]=e;f=av(q,30,a,l,i)|0}a:do if((f|0)>29){x=0;a=Da(3)|0;f=x;x=0;f=f&1;if(j){if(!f?(x=0,k[m>>2]=k[c+8>>2],p[m+8>>3]=e,g=Ea(17,s|0,a|0,l|0,m|0)|0,o=x,x=0,!(o&1)):0)A=12}else if(!f?(x=0,p[n>>3]=e,o=Ea(17,s|0,a|0,l|0,n|0)|0,n=x,x=0,!(n&1)):0){g=o;A=12}do if((A|0)==12){a=k[s>>2]|0;if(!a){x=0;Ga(6);o=x;x=0;if(o&1)break;f=k[s>>2]|0}else f=a;a=f;l=f;A=16;break a}while(0);a=Wa()|0}else{a=k[s>>2]|0;l=0;g=f;A=16}while(0);if((A|0)==16){i=a+g|0;j=Fp(a,i,c)|0;do if((a|0)==(q|0)){a=q;f=0;A=22}else{g=Pl(g<<3)|0;if(!g){x=0;Ga(6);A=x;x=0;if(A&1){f=0;A=20;break}a=k[s>>2]|0}f=g;h=g;A=22}while(0);do if((A|0)==22){x=0;g=ta(68,c|0)|0;s=x;x=0;if(!(s&1)){k[u>>2]=g;x=0;ya(4,a|0,j|0,i|0,h|0,y|0,w|0,u|0);u=x;x=0;if(u&1){a=Wa()|0;zm(g)|0;break}zm(g)|0;k[v>>2]=k[b>>2];A=k[y>>2]|0;a=k[w>>2]|0;x=0;k[t>>2]=k[v>>2];a=sa(40,t|0,h|0,A|0,a|0,c|0,d|0)|0;A=x;x=0;if(!(A&1)){k[b>>2]=a;if(f)Ql(f);if(l)Ql(l);r=z;return a|0}else A=20}else A=20}while(0);if((A|0)==20)a=Wa()|0;if(f)Ql(f);if(l)Ql(l)}fb(a|0);return 0}function _p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+192|0;j=o;a=o+180|0;m=o+160|0;n=o+12|0;h=o+8|0;l=o+4|0;i[a>>0]=i[58901]|0;i[a+1>>0]=i[58902]|0;i[a+2>>0]=i[58903]|0;i[a+3>>0]=i[58904]|0;i[a+4>>0]=i[58905]|0;i[a+5>>0]=i[58906]|0;f=fp()|0;k[j>>2]=e;a=av(m,20,f,a,j)|0;e=m+a|0;f=Fp(m,e,c)|0;g=tn(c)|0;k[h>>2]=g;x=0;h=Aa(37,h|0,44212)|0;p=x;x=0;if(p&1){p=Wa()|0;zm(g)|0;fb(p|0)}else{zm(g)|0;Zb[k[(k[h>>2]|0)+48>>2]&31](h,m,e,n)|0;p=n+(a<<2)|0;k[l>>2]=k[b>>2];k[j>>2]=k[l>>2];p=cv(j,n,(f|0)==(e|0)?p:n+(f-m<<2)|0,p,c,d)|0;r=o;return p|0}return 0}function $p(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0;C=r;r=r+32|0;v=C+16|0;u=C+12|0;z=C+8|0;w=C+4|0;y=C;m=tn(d)|0;k[z>>2]=m;x=0;z=Aa(37,z|0,44220)|0;t=x;x=0;if(t&1){C=Wa()|0;zm(m)|0;fb(C|0)}zm(m)|0;k[e>>2]=0;t=z+8|0;m=k[b>>2]|0;a:do if((g|0)!=(h|0)){b:while(1){n=m;if(m){if((k[m+12>>2]|0)==(k[m+16>>2]|0)?(Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0)==-1:0){k[b>>2]=0;m=0;n=0}}else m=0;q=(m|0)==0;p=k[c>>2]|0;o=p;do if(p){if((k[p+12>>2]|0)==(k[p+16>>2]|0)?(Ob[k[(k[p>>2]|0)+36>>2]&127](p)|0)==-1:0){k[c>>2]=0;o=0;B=12;break}if(!q){B=13;break b}}else B=12;while(0);if((B|0)==12){B=0;if(q){B=13;break}else p=0}c:do if((Qb[k[(k[z>>2]|0)+36>>2]&63](z,i[g>>0]|0,0)|0)<<24>>24==37){p=g+1|0;if((p|0)==(h|0)){B=17;break b}s=Qb[k[(k[z>>2]|0)+36>>2]&63](z,i[p>>0]|0,0)|0;switch(s<<24>>24){case 48:case 69:{q=g+2|0;if((q|0)==(h|0)){B=20;break b}g=p;p=Qb[k[(k[z>>2]|0)+36>>2]&63](z,i[q>>0]|0,0)|0;m=s;break}default:{p=s;m=0}}s=k[(k[a>>2]|0)+36>>2]|0;k[w>>2]=n;k[y>>2]=o;k[u>>2]=k[w>>2];k[v>>2]=k[y>>2];s=ac[s&15](a,u,v,d,e,f,p,m)|0;k[b>>2]=s;g=g+2|0}else{n=i[g>>0]|0;if(n<<24>>24>-1?(A=k[t>>2]|0,(j[A+(n<<24>>24<<1)>>1]&8192)!=0):0){do{g=g+1|0;if((g|0)==(h|0)){g=h;break}n=i[g>>0]|0;if(n<<24>>24<=-1)break}while((j[A+(n<<24>>24<<1)>>1]&8192)!=0);n=p;while(1){if(m){if((k[m+12>>2]|0)==(k[m+16>>2]|0)?(Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0)==-1:0){k[b>>2]=0;m=0}}else m=0;o=(m|0)==0;do if(p){if((k[p+12>>2]|0)!=(k[p+16>>2]|0))if(o){s=n;break}else break c;if((Ob[k[(k[p>>2]|0)+36>>2]&127](p)|0)!=-1)if(o^(n|0)==0){s=n;p=n;break}else break c;else{k[c>>2]=0;n=0;B=39;break}}else B=39;while(0);if((B|0)==39){B=0;if(o)break c;else{s=n;p=0}}o=m+12|0;n=k[o>>2]|0;q=m+16|0;if((n|0)==(k[q>>2]|0))n=Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0;else n=l[n>>0]|0;if((n&255)<<24>>24<=-1)break c;if(!(j[(k[t>>2]|0)+(n<<24>>24<<1)>>1]&8192))break c;n=k[o>>2]|0;if((n|0)==(k[q>>2]|0)){Ob[k[(k[m>>2]|0)+40>>2]&127](m)|0;n=s;continue}else{k[o>>2]=n+1;n=s;continue}}}o=m+12|0;n=k[o>>2]|0;p=m+16|0;if((n|0)==(k[p>>2]|0))n=Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0;else n=l[n>>0]|0;s=Vb[k[(k[z>>2]|0)+12>>2]&63](z,n&255)|0;if(s<<24>>24!=(Vb[k[(k[z>>2]|0)+12>>2]&63](z,i[g>>0]|0)|0)<<24>>24){B=57;break b}n=k[o>>2]|0;if((n|0)==(k[p>>2]|0))Ob[k[(k[m>>2]|0)+40>>2]&127](m)|0;else k[o>>2]=n+1;g=g+1|0}while(0);m=k[b>>2]|0;if(!((g|0)!=(h|0)&(k[e>>2]|0)==0))break a}if((B|0)==13){k[e>>2]=4;break}else if((B|0)==17){k[e>>2]=4;break}else if((B|0)==20){k[e>>2]=4;break}else if((B|0)==57){k[e>>2]=4;m=k[b>>2]|0;break}}while(0);if(m){if((k[m+12>>2]|0)==(k[m+16>>2]|0)?(Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0)==-1:0){k[b>>2]=0;m=0}}else m=0;g=(m|0)==0;n=k[c>>2]|0;do if(n){if((k[n+12>>2]|0)==(k[n+16>>2]|0)?(Ob[k[(k[n>>2]|0)+36>>2]&127](n)|0)==-1:0){k[c>>2]=0;B=67;break}if(!g)B=68}else B=67;while(0);if((B|0)==67?g:0)B=68;if((B|0)==68)k[e>>2]=k[e>>2]|2;r=C;return m|0}function aq(a){a=a|0;return}function bq(a){a=a|0;mj(a);return}function cq(a){a=a|0;return 2}function dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=$p(a,i,h,d,e,f,58907,58915)|0;r=g;return a|0}function eq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0;g=r;r=r+16|0;h=g+12|0;j=g+8|0;m=g+4|0;l=g;n=a+8|0;n=Ob[k[(k[n>>2]|0)+20>>2]&127](n)|0;k[m>>2]=k[b>>2];k[l>>2]=k[c>>2];c=i[n>>0]|0;o=(c&1)==0;b=o?n+1|0:k[n+8>>2]|0;c=b+(o?(c&255)>>>1:k[n+4>>2]|0)|0;k[j>>2]=k[m>>2];k[h>>2]=k[l>>2];a=$p(a,j,h,d,e,f,b,c)|0;r=g;return a|0}function fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44220)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];gq(a,f+24|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function gq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=r;r=r+16|0;h=g+4|0;i=g;a=a+8|0;a=Ob[k[k[a>>2]>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];c=(Hu(c,h,a,a+168|0,f,e,0)|0)-a|0;if((c|0)<168)k[b>>2]=((c|0)/12|0|0)%7|0;r=g;return}function hq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44220)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];iq(a,f+16|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function iq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=r;r=r+16|0;h=g+4|0;i=g;a=a+8|0;a=Ob[k[(k[a>>2]|0)+4>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];c=(Hu(c,h,a,a+288|0,f,e,0)|0)-a|0;if((c|0)<288)k[b>>2]=((c|0)/12|0|0)%12|0;r=g;return}function jq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44220)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];kq(a,f+20|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function kq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,4)|0;if(!(k[e>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;k[b>>2]=a+-1900}r=g;return}function lq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;U=r;r=r+144|0;j=U+132|0;h=U+116|0;N=U+128|0;w=U+124|0;I=U+120|0;O=U+112|0;P=U+108|0;Q=U+104|0;R=U+100|0;S=U+96|0;T=U+92|0;l=U+88|0;m=U+84|0;n=U+80|0;o=U+76|0;p=U+72|0;q=U+68|0;s=U+64|0;t=U+60|0;u=U+56|0;v=U+52|0;y=U+48|0;z=U+44|0;A=U+40|0;B=U+36|0;C=U+32|0;D=U+28|0;E=U+24|0;F=U+20|0;G=U+16|0;H=U+12|0;J=U+8|0;K=U+4|0;L=U;k[e>>2]=0;M=tn(d)|0;k[N>>2]=M;x=0;N=Aa(37,N|0,44220)|0;W=x;x=0;if(W&1){W=Wa()|0;zm(M)|0;fb(W|0)}zm(M)|0;do switch(g<<24>>24|0){case 65:case 97:{k[w>>2]=k[c>>2];k[j>>2]=k[w>>2];gq(a,f+24|0,b,j,e,N);V=28;break}case 104:case 66:case 98:{k[I>>2]=k[c>>2];k[j>>2]=k[I>>2];iq(a,f+16|0,b,j,e,N);V=28;break}case 99:{V=a+8|0;V=Ob[k[(k[V>>2]|0)+12>>2]&127](V)|0;k[O>>2]=k[b>>2];k[P>>2]=k[c>>2];g=i[V>>0]|0;c=(g&1)==0;W=c?V+1|0:k[V+8>>2]|0;V=W+(c?(g&255)>>>1:k[V+4>>2]|0)|0;k[h>>2]=k[O>>2];k[j>>2]=k[P>>2];V=$p(a,h,j,d,e,f,W,V)|0;k[b>>2]=V;V=28;break}case 101:case 100:{k[Q>>2]=k[c>>2];k[j>>2]=k[Q>>2];mq(a,f+12|0,b,j,e,N);V=28;break}case 68:{k[R>>2]=k[b>>2];k[S>>2]=k[c>>2];k[h>>2]=k[R>>2];k[j>>2]=k[S>>2];V=$p(a,h,j,d,e,f,58915,58923)|0;k[b>>2]=V;V=28;break}case 70:{k[T>>2]=k[b>>2];k[l>>2]=k[c>>2];k[h>>2]=k[T>>2];k[j>>2]=k[l>>2];V=$p(a,h,j,d,e,f,58923,58931)|0;k[b>>2]=V;V=28;break}case 72:{k[m>>2]=k[c>>2];k[j>>2]=k[m>>2];nq(a,f+8|0,b,j,e,N);V=28;break}case 73:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];oq(a,f+8|0,b,j,e,N);V=28;break}case 106:{k[o>>2]=k[c>>2];k[j>>2]=k[o>>2];pq(a,f+28|0,b,j,e,N);V=28;break}case 109:{k[p>>2]=k[c>>2];k[j>>2]=k[p>>2];qq(a,f+16|0,b,j,e,N);V=28;break}case 77:{k[q>>2]=k[c>>2];k[j>>2]=k[q>>2];rq(a,f+4|0,b,j,e,N);V=28;break}case 116:case 110:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];sq(a,b,j,e,N);V=28;break}case 112:{k[t>>2]=k[c>>2];k[j>>2]=k[t>>2];tq(a,f+8|0,b,j,e,N);V=28;break}case 114:{k[u>>2]=k[b>>2];k[v>>2]=k[c>>2];k[h>>2]=k[u>>2];k[j>>2]=k[v>>2];V=$p(a,h,j,d,e,f,58931,58942)|0;k[b>>2]=V;V=28;break}case 82:{k[y>>2]=k[b>>2];k[z>>2]=k[c>>2];k[h>>2]=k[y>>2];k[j>>2]=k[z>>2];V=$p(a,h,j,d,e,f,58942,58947)|0;k[b>>2]=V;V=28;break}case 83:{k[A>>2]=k[c>>2];k[j>>2]=k[A>>2];uq(a,f,b,j,e,N);V=28;break}case 84:{k[B>>2]=k[b>>2];k[C>>2]=k[c>>2];k[h>>2]=k[B>>2];k[j>>2]=k[C>>2];V=$p(a,h,j,d,e,f,58947,58955)|0;k[b>>2]=V;V=28;break}case 119:{k[D>>2]=k[c>>2];k[j>>2]=k[D>>2];vq(a,f+24|0,b,j,e,N);V=28;break}case 120:{W=k[(k[a>>2]|0)+20>>2]|0;k[E>>2]=k[b>>2];k[F>>2]=k[c>>2];k[h>>2]=k[E>>2];k[j>>2]=k[F>>2];h=Nb[W&63](a,h,j,d,e,f)|0;break}case 88:{V=a+8|0;V=Ob[k[(k[V>>2]|0)+24>>2]&127](V)|0;k[G>>2]=k[b>>2];k[H>>2]=k[c>>2];g=i[V>>0]|0;c=(g&1)==0;W=c?V+1|0:k[V+8>>2]|0;V=W+(c?(g&255)>>>1:k[V+4>>2]|0)|0;k[h>>2]=k[G>>2];k[j>>2]=k[H>>2];V=$p(a,h,j,d,e,f,W,V)|0;k[b>>2]=V;V=28;break}case 121:{k[J>>2]=k[c>>2];k[j>>2]=k[J>>2];kq(a,f+20|0,b,j,e,N);V=28;break}case 89:{k[K>>2]=k[c>>2];k[j>>2]=k[K>>2];wq(a,f+20|0,b,j,e,N);V=28;break}case 37:{k[L>>2]=k[c>>2];k[j>>2]=k[L>>2];xq(a,b,j,e,N);V=28;break}default:{k[e>>2]=k[e>>2]|4;V=28}}while(0);if((V|0)==28)h=k[b>>2]|0;r=U;return h|0}function mq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<31&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function nq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<24&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function oq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<12&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function pq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,3)|0;c=k[e>>2]|0;if((a|0)<366&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function qq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<13&(c&4|0)==0)k[b>>2]=a+-1;else k[e>>2]=c|4;r=g;return}function rq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<60&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function sq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=e+8|0;a:while(1){e=k[b>>2]|0;do if(e){if((k[e+12>>2]|0)==(k[e+16>>2]|0))if((Ob[k[(k[e>>2]|0)+36>>2]&127](e)|0)==-1){k[b>>2]=0;e=0;break}else{e=k[b>>2]|0;break}}else e=0;while(0);e=(e|0)==0;a=k[c>>2]|0;do if(a){if((k[a+12>>2]|0)!=(k[a+16>>2]|0))if(e)break;else break a;if((Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)!=-1)if(e)break;else break a;else{k[c>>2]=0;h=12;break}}else h=12;while(0);if((h|0)==12){h=0;if(e){a=0;break}else a=0}e=k[b>>2]|0;f=k[e+12>>2]|0;if((f|0)==(k[e+16>>2]|0))e=Ob[k[(k[e>>2]|0)+36>>2]&127](e)|0;else e=l[f>>0]|0;if((e&255)<<24>>24<=-1)break;if(!(j[(k[g>>2]|0)+(e<<24>>24<<1)>>1]&8192))break;e=k[b>>2]|0;a=e+12|0;f=k[a>>2]|0;if((f|0)==(k[e+16>>2]|0)){Ob[k[(k[e>>2]|0)+40>>2]&127](e)|0;continue}else{k[a>>2]=f+1;continue}}e=k[b>>2]|0;do if(e){if((k[e+12>>2]|0)==(k[e+16>>2]|0))if((Ob[k[(k[e>>2]|0)+36>>2]&127](e)|0)==-1){k[b>>2]=0;e=0;break}else{e=k[b>>2]|0;break}}else e=0;while(0);e=(e|0)==0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)?(Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1:0){k[c>>2]=0;h=32;break}if(!e)h=33}else h=32;while(0);if((h|0)==32?e:0)h=33;if((h|0)==33)k[d>>2]=k[d>>2]|2;return}function tq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0;m=r;r=r+16|0;h=m+4|0;j=m;l=a+8|0;l=Ob[k[(k[l>>2]|0)+8>>2]&127](l)|0;a=i[l>>0]|0;if(!(a&1))g=(a&255)>>>1;else g=k[l+4>>2]|0;a=i[l+12>>0]|0;if(!(a&1))a=(a&255)>>>1;else a=k[l+16>>2]|0;do if((g|0)!=(0-a|0)){k[j>>2]=k[d>>2];k[h>>2]=k[j>>2];a=Hu(c,h,l,l+24|0,f,e,0)|0;g=k[b>>2]|0;if((a|0)==(l|0)&(g|0)==12){k[b>>2]=0;break}if((g|0)<12&(a-l|0)==12)k[b>>2]=g+12}else k[e>>2]=k[e>>2]|4;while(0);r=m;return}function uq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<61&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function vq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,1)|0;c=k[e>>2]|0;if((a|0)<7&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function wq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=dv(c,a,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=a+-1900;r=g;return}function xq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=k[b>>2]|0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0))if((Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1){k[b>>2]=0;a=0;break}else{a=k[b>>2]|0;break}}else a=0;while(0);f=(a|0)==0;a=k[c>>2]|0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)?(Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1:0){k[c>>2]=0;h=11;break}if(f){g=a;h=13}else h=12}else h=11;while(0);if((h|0)==11)if(f)h=12;else{g=0;h=13}a:do if((h|0)==12)k[d>>2]=k[d>>2]|6;else if((h|0)==13){a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=l[f>>0]|0;if((Qb[k[(k[e>>2]|0)+36>>2]&63](e,a&255,0)|0)<<24>>24!=37){k[d>>2]=k[d>>2]|4;break}a=k[b>>2]|0;f=a+12|0;e=k[f>>2]|0;if((e|0)==(k[a+16>>2]|0)){Ob[k[(k[a>>2]|0)+40>>2]&127](a)|0;a=k[b>>2]|0;if(!a)a=0;else h=21}else{k[f>>2]=e+1;h=21}do if((h|0)==21)if((k[a+12>>2]|0)==(k[a+16>>2]|0))if((Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1){k[b>>2]=0;a=0;break}else{a=k[b>>2]|0;break}while(0);a=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)?(Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0)==-1:0){k[c>>2]=0;h=30;break}if(a)break a}else h=30;while(0);if((h|0)==30?!a:0)break;k[d>>2]=k[d>>2]|2}while(0);return}function yq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;w=r;r=r+32|0;q=w+16|0;p=w+12|0;u=w+8|0;s=w+4|0;t=w;i=tn(d)|0;k[u>>2]=i;x=0;u=Aa(37,u|0,44212)|0;o=x;x=0;if(o&1){w=Wa()|0;zm(i)|0;fb(w|0)}zm(i)|0;k[e>>2]=0;i=k[b>>2]|0;a:do if((g|0)!=(h|0)){b:while(1){l=i;if(i){j=k[i+12>>2]|0;if((j|0)==(k[i+16>>2]|0))j=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=k[j>>2]|0;if((j|0)==-1){k[b>>2]=0;i=0;n=1;o=0}else{n=0;o=l}}else{i=0;n=1;o=l}m=k[c>>2]|0;j=m;do if(m){l=k[m+12>>2]|0;if((l|0)==(k[m+16>>2]|0))l=Ob[k[(k[m>>2]|0)+36>>2]&127](m)|0;else l=k[l>>2]|0;if((l|0)!=-1)if(n)break;else{v=17;break b}else{k[c>>2]=0;j=0;v=15;break}}else v=15;while(0);if((v|0)==15){v=0;if(n){v=17;break}else m=0}c:do if((Qb[k[(k[u>>2]|0)+52>>2]&63](u,k[g>>2]|0,0)|0)<<24>>24==37){l=g+4|0;if((l|0)==(h|0)){v=21;break b}n=Qb[k[(k[u>>2]|0)+52>>2]&63](u,k[l>>2]|0,0)|0;switch(n<<24>>24){case 48:case 69:{m=g+8|0;if((m|0)==(h|0)){v=24;break b}g=l;l=Qb[k[(k[u>>2]|0)+52>>2]&63](u,k[m>>2]|0,0)|0;i=n;break}default:{l=n;i=0}}n=k[(k[a>>2]|0)+36>>2]|0;k[s>>2]=o;k[t>>2]=j;k[p>>2]=k[s>>2];k[q>>2]=k[t>>2];o=ac[n&15](a,p,q,d,e,f,l,i)|0;k[b>>2]=o;g=g+8|0}else{if(!(Qb[k[(k[u>>2]|0)+12>>2]&63](u,8192,k[g>>2]|0)|0)){l=i+12|0;j=k[l>>2]|0;m=i+16|0;if((j|0)==(k[m>>2]|0))j=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=k[j>>2]|0;o=Vb[k[(k[u>>2]|0)+28>>2]&63](u,j)|0;if((o|0)!=(Vb[k[(k[u>>2]|0)+28>>2]&63](u,k[g>>2]|0)|0)){v=61;break b}j=k[l>>2]|0;if((j|0)==(k[m>>2]|0))Ob[k[(k[i>>2]|0)+40>>2]&127](i)|0;else k[l>>2]=j+4;g=g+4|0;break}do{g=g+4|0;if((g|0)==(h|0)){g=h;break}}while(Qb[k[(k[u>>2]|0)+12>>2]&63](u,8192,k[g>>2]|0)|0);j=m;n=m;while(1){if(i){l=k[i+12>>2]|0;if((l|0)==(k[i+16>>2]|0))l=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else l=k[l>>2]|0;if((l|0)==-1){k[b>>2]=0;m=1;i=0}else m=0}else{m=1;i=0}do if(n){l=k[n+12>>2]|0;if((l|0)==(k[n+16>>2]|0))l=Ob[k[(k[n>>2]|0)+36>>2]&127](n)|0;else l=k[l>>2]|0;if((l|0)!=-1)if(m^(j|0)==0){o=j;n=j;break}else break c;else{k[c>>2]=0;j=0;v=44;break}}else v=44;while(0);if((v|0)==44){v=0;if(m)break c;else{o=j;n=0}}l=i+12|0;j=k[l>>2]|0;m=i+16|0;if((j|0)==(k[m>>2]|0))j=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else j=k[j>>2]|0;if(!(Qb[k[(k[u>>2]|0)+12>>2]&63](u,8192,j)|0))break c;j=k[l>>2]|0;if((j|0)==(k[m>>2]|0)){Ob[k[(k[i>>2]|0)+40>>2]&127](i)|0;j=o;continue}else{k[l>>2]=j+4;j=o;continue}}}while(0);i=k[b>>2]|0;if(!((g|0)!=(h|0)&(k[e>>2]|0)==0))break a}if((v|0)==17){k[e>>2]=4;break}else if((v|0)==21){k[e>>2]=4;break}else if((v|0)==24){k[e>>2]=4;break}else if((v|0)==61){k[e>>2]=4;i=k[b>>2]|0;break}}while(0);if(i){g=k[i+12>>2]|0;if((g|0)==(k[i+16>>2]|0))g=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else g=k[g>>2]|0;if((g|0)==-1){k[b>>2]=0;i=0;l=1}else l=0}else{i=0;l=1}g=k[c>>2]|0;do if(g){j=k[g+12>>2]|0;if((j|0)==(k[g+16>>2]|0))g=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=k[j>>2]|0;if((g|0)!=-1)if(l)break;else{v=76;break}else{k[c>>2]=0;v=74;break}}else v=74;while(0);if((v|0)==74?l:0)v=76;if((v|0)==76)k[e>>2]=k[e>>2]|2;r=w;return i|0}function zq(a){a=a|0;return}function Aq(a){a=a|0;mj(a);return}function Bq(a){a=a|0;return 2}function Cq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=yq(a,i,h,d,e,f,44788,44820)|0;r=g;return a|0}function Dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;g=r;r=r+16|0;h=g+12|0;j=g+8|0;m=g+4|0;l=g;p=a+8|0;p=Ob[k[(k[p>>2]|0)+20>>2]&127](p)|0;k[m>>2]=k[b>>2];k[l>>2]=k[c>>2];n=i[p>>0]|0;o=(n&1)==0;c=p+4|0;b=o?c:k[p+8>>2]|0;c=b+((o?(n&255)>>>1:k[c>>2]|0)<<2)|0;k[j>>2]=k[m>>2];k[h>>2]=k[l>>2];a=yq(a,j,h,d,e,f,b,c)|0;r=g;return a|0}function Eq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44212)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];Fq(a,f+24|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function Fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=r;r=r+16|0;h=g+4|0;i=g;a=a+8|0;a=Ob[k[k[a>>2]>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];c=(Su(c,h,a,a+168|0,f,e,0)|0)-a|0;if((c|0)<168)k[b>>2]=((c|0)/12|0|0)%7|0;r=g;return}function Gq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44212)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];Hq(a,f+16|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function Hq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=r;r=r+16|0;h=g+4|0;i=g;a=a+8|0;a=Ob[k[(k[a>>2]|0)+4>>2]&127](a)|0;k[i>>2]=k[d>>2];k[h>>2]=k[i>>2];c=(Su(c,h,a,a+288|0,f,e,0)|0)-a|0;if((c|0)<288)k[b>>2]=((c|0)/12|0|0)%12|0;r=g;return}function Iq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j+4|0;i=j;d=tn(d)|0;k[g>>2]=d;x=0;g=Aa(37,g|0,44212)|0;l=x;x=0;if(l&1){l=Wa()|0;zm(d)|0;fb(l|0)}else{zm(d)|0;k[i>>2]=k[c>>2];k[h>>2]=k[i>>2];Jq(a,f+20|0,b,h,e,g);r=j;return k[b>>2]|0}return 0}function Jq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,4)|0;if(!(k[e>>2]&4)){if((a|0)<69)a=a+2e3|0;else a=(a+-69|0)>>>0<31?a+1900|0:a;k[b>>2]=a+-1900}r=g;return}function Kq(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;U=r;r=r+144|0;j=U+132|0;h=U+116|0;N=U+128|0;w=U+124|0;I=U+120|0;O=U+112|0;P=U+108|0;Q=U+104|0;R=U+100|0;S=U+96|0;T=U+92|0;l=U+88|0;m=U+84|0;n=U+80|0;o=U+76|0;p=U+72|0;q=U+68|0;s=U+64|0;t=U+60|0;u=U+56|0;v=U+52|0;y=U+48|0;z=U+44|0;A=U+40|0;B=U+36|0;C=U+32|0;D=U+28|0;E=U+24|0;F=U+20|0;G=U+16|0;H=U+12|0;J=U+8|0;K=U+4|0;L=U;k[e>>2]=0;M=tn(d)|0;k[N>>2]=M;x=0;N=Aa(37,N|0,44212)|0;W=x;x=0;if(W&1){W=Wa()|0;zm(M)|0;fb(W|0)}zm(M)|0;do switch(g<<24>>24|0){case 65:case 97:{k[w>>2]=k[c>>2];k[j>>2]=k[w>>2];Fq(a,f+24|0,b,j,e,N);V=28;break}case 104:case 66:case 98:{k[I>>2]=k[c>>2];k[j>>2]=k[I>>2];Hq(a,f+16|0,b,j,e,N);V=28;break}case 99:{W=a+8|0;W=Ob[k[(k[W>>2]|0)+12>>2]&127](W)|0;k[O>>2]=k[b>>2];k[P>>2]=k[c>>2];g=i[W>>0]|0;c=(g&1)==0;V=W+4|0;W=c?V:k[W+8>>2]|0;V=W+((c?(g&255)>>>1:k[V>>2]|0)<<2)|0;k[h>>2]=k[O>>2];k[j>>2]=k[P>>2];V=yq(a,h,j,d,e,f,W,V)|0;k[b>>2]=V;V=28;break}case 101:case 100:{k[Q>>2]=k[c>>2];k[j>>2]=k[Q>>2];Lq(a,f+12|0,b,j,e,N);V=28;break}case 68:{k[R>>2]=k[b>>2];k[S>>2]=k[c>>2];k[h>>2]=k[R>>2];k[j>>2]=k[S>>2];V=yq(a,h,j,d,e,f,44820,44852)|0;k[b>>2]=V;V=28;break}case 70:{k[T>>2]=k[b>>2];k[l>>2]=k[c>>2];k[h>>2]=k[T>>2];k[j>>2]=k[l>>2];V=yq(a,h,j,d,e,f,44852,44884)|0;k[b>>2]=V;V=28;break}case 72:{k[m>>2]=k[c>>2];k[j>>2]=k[m>>2];Mq(a,f+8|0,b,j,e,N);V=28;break}case 73:{k[n>>2]=k[c>>2];k[j>>2]=k[n>>2];Nq(a,f+8|0,b,j,e,N);V=28;break}case 106:{k[o>>2]=k[c>>2];k[j>>2]=k[o>>2];Oq(a,f+28|0,b,j,e,N);V=28;break}case 109:{k[p>>2]=k[c>>2];k[j>>2]=k[p>>2];Pq(a,f+16|0,b,j,e,N);V=28;break}case 77:{k[q>>2]=k[c>>2];k[j>>2]=k[q>>2];Qq(a,f+4|0,b,j,e,N);V=28;break}case 116:case 110:{k[s>>2]=k[c>>2];k[j>>2]=k[s>>2];Rq(a,b,j,e,N);V=28;break}case 112:{k[t>>2]=k[c>>2];k[j>>2]=k[t>>2];Sq(a,f+8|0,b,j,e,N);V=28;break}case 114:{k[u>>2]=k[b>>2];k[v>>2]=k[c>>2];k[h>>2]=k[u>>2];k[j>>2]=k[v>>2];V=yq(a,h,j,d,e,f,44884,44928)|0;k[b>>2]=V;V=28;break}case 82:{k[y>>2]=k[b>>2];k[z>>2]=k[c>>2];k[h>>2]=k[y>>2];k[j>>2]=k[z>>2];V=yq(a,h,j,d,e,f,44928,44948)|0;k[b>>2]=V;V=28;break}case 83:{k[A>>2]=k[c>>2];k[j>>2]=k[A>>2];Tq(a,f,b,j,e,N);V=28;break}case 84:{k[B>>2]=k[b>>2];k[C>>2]=k[c>>2];k[h>>2]=k[B>>2];k[j>>2]=k[C>>2];V=yq(a,h,j,d,e,f,44948,44980)|0;k[b>>2]=V;V=28;break}case 119:{k[D>>2]=k[c>>2];k[j>>2]=k[D>>2];Uq(a,f+24|0,b,j,e,N);V=28;break}case 120:{W=k[(k[a>>2]|0)+20>>2]|0;k[E>>2]=k[b>>2];k[F>>2]=k[c>>2];k[h>>2]=k[E>>2];k[j>>2]=k[F>>2];h=Nb[W&63](a,h,j,d,e,f)|0;break}case 88:{W=a+8|0;W=Ob[k[(k[W>>2]|0)+24>>2]&127](W)|0;k[G>>2]=k[b>>2];k[H>>2]=k[c>>2];g=i[W>>0]|0;c=(g&1)==0;V=W+4|0;W=c?V:k[W+8>>2]|0;V=W+((c?(g&255)>>>1:k[V>>2]|0)<<2)|0;k[h>>2]=k[G>>2];k[j>>2]=k[H>>2];V=yq(a,h,j,d,e,f,W,V)|0;k[b>>2]=V;V=28;break}case 121:{k[J>>2]=k[c>>2];k[j>>2]=k[J>>2];Jq(a,f+20|0,b,j,e,N);V=28;break}case 89:{k[K>>2]=k[c>>2];k[j>>2]=k[K>>2];Vq(a,f+20|0,b,j,e,N);V=28;break}case 37:{k[L>>2]=k[c>>2];k[j>>2]=k[L>>2];Wq(a,b,j,e,N);V=28;break}default:{k[e>>2]=k[e>>2]|4;V=28}}while(0);if((V|0)==28)h=k[b>>2]|0;r=U;return h|0}function Lq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<31&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Mq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<24&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Nq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a+-1|0)>>>0<12&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Oq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,3)|0;c=k[e>>2]|0;if((a|0)<366&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Pq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<13&(c&4|0)==0)k[b>>2]=a+-1;else k[e>>2]=c|4;r=g;return}function Qq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<60&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Rq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if((a|0)==-1){k[b>>2]=0;g=1;break}else{g=(k[b>>2]|0)==0;break}}else g=1;while(0);f=k[c>>2]|0;do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=k[a>>2]|0;if((a|0)!=-1)if(g){g=f;break}else{g=f;break a}else{k[c>>2]=0;h=15;break}}else h=15;while(0);if((h|0)==15){h=0;if(g){g=0;break}else g=0}a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if(!(Qb[k[(k[e>>2]|0)+12>>2]&63](e,8192,a)|0))break;a=k[b>>2]|0;f=a+12|0;g=k[f>>2]|0;if((g|0)==(k[a+16>>2]|0)){Ob[k[(k[a>>2]|0)+40>>2]&127](a)|0;continue}else{k[f>>2]=g+4;continue}}a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if((a|0)==-1){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}else f=1;while(0);do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0))a=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else a=k[a>>2]|0;if((a|0)!=-1)if(f)break;else{h=39;break}else{k[c>>2]=0;h=37;break}}else h=37;while(0);if((h|0)==37?f:0)h=39;if((h|0)==39)k[d>>2]=k[d>>2]|2;return}function Sq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0;m=r;r=r+16|0;h=m+4|0;j=m;l=a+8|0;l=Ob[k[(k[l>>2]|0)+8>>2]&127](l)|0;a=i[l>>0]|0;if(!(a&1))g=(a&255)>>>1;else g=k[l+4>>2]|0;a=i[l+12>>0]|0;if(!(a&1))a=(a&255)>>>1;else a=k[l+16>>2]|0;do if((g|0)!=(0-a|0)){k[j>>2]=k[d>>2];k[h>>2]=k[j>>2];a=Su(c,h,l,l+24|0,f,e,0)|0;g=k[b>>2]|0;if((a|0)==(l|0)&(g|0)==12){k[b>>2]=0;break}if((g|0)<12&(a-l|0)==12)k[b>>2]=g+12}else k[e>>2]=k[e>>2]|4;while(0);r=m;return}function Tq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,2)|0;c=k[e>>2]|0;if((a|0)<61&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Uq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,1)|0;c=k[e>>2]|0;if((a|0)<7&(c&4|0)==0)k[b>>2]=a;else k[e>>2]=c|4;r=g;return}function Vq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;a=g+4|0;h=g;k[h>>2]=k[d>>2];k[a>>2]=k[h>>2];a=ev(c,a,e,f,4)|0;if(!(k[e>>2]&4))k[b>>2]=a+-1900;r=g;return}function Wq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=k[b>>2]|0;do if(a){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if((a|0)==-1){k[b>>2]=0;g=1;break}else{g=(k[b>>2]|0)==0;break}}else g=1;while(0);f=k[c>>2]|0;do if(f){a=k[f+12>>2]|0;if((a|0)==(k[f+16>>2]|0))a=Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0;else a=k[a>>2]|0;if((a|0)!=-1)if(g){h=f;i=17;break}else{i=16;break}else{k[c>>2]=0;i=14;break}}else i=14;while(0);if((i|0)==14)if(g)i=16;else{h=0;i=17}a:do if((i|0)==16)k[d>>2]=k[d>>2]|6;else if((i|0)==17){a=k[b>>2]|0;f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if((Qb[k[(k[e>>2]|0)+52>>2]&63](e,a,0)|0)<<24>>24!=37){k[d>>2]=k[d>>2]|4;break}a=k[b>>2]|0;f=a+12|0;g=k[f>>2]|0;if((g|0)==(k[a+16>>2]|0)){Ob[k[(k[a>>2]|0)+40>>2]&127](a)|0;a=k[b>>2]|0;if(!a)f=1;else i=25}else{k[f>>2]=g+4;i=25}do if((i|0)==25){f=k[a+12>>2]|0;if((f|0)==(k[a+16>>2]|0))a=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;else a=k[f>>2]|0;if((a|0)==-1){k[b>>2]=0;f=1;break}else{f=(k[b>>2]|0)==0;break}}while(0);do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0))a=Ob[k[(k[h>>2]|0)+36>>2]&127](h)|0;else a=k[a>>2]|0;if((a|0)!=-1)if(f)break a;else break;else{k[c>>2]=0;i=37;break}}else i=37;while(0);if((i|0)==37?!f:0)break;k[d>>2]=k[d>>2]|2}while(0);return}function Xq(a){a=a|0;Yq(a+8|0);return}function Yq(a){a=a|0;var b=0,c=0,d=0;b=k[a>>2]|0;x=0;c=Da(3)|0;d=x;x=0;do if(!(d&1)){if((b|0)!=(c|0)?(x=0,qa(188,k[a>>2]|0),d=x,x=0,d&1):0)break;return}while(0);d=Wa(0)|0;oc(d)}function Zq(a){a=a|0;Yq(a+8|0);mj(a);return}function _q(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=r;r=r+112|0;h=j+4|0;c=j;k[c>>2]=h+100;$q(a+8|0,h,c,e,f,g);e=k[c>>2]|0;c=k[b>>2]|0;if((h|0)!=(e|0))do{g=i[h>>0]|0;do if(c){d=c+24|0;f=k[d>>2]|0;if((f|0)==(k[c+28>>2]|0)){b=(Vb[k[(k[c>>2]|0)+52>>2]&63](c,g&255)|0)==-1;c=b?0:c;break}else{k[d>>2]=f+1;i[f>>0]=g;break}}else c=0;while(0);h=h+1|0}while((h|0)!=(e|0));r=j;return c|0}function $q(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0;l=r;r=r+16|0;j=l;i[j>>0]=37;g=j+1|0;i[g>>0]=e;h=j+2|0;i[h>>0]=f;i[j+3>>0]=0;if(f<<24>>24){i[g>>0]=f;i[h>>0]=e}a=b+(_a(b|0,(k[c>>2]|0)-b|0,j|0,d|0,k[a>>2]|0)|0)|0;k[c>>2]=a;r=l;return}function ar(a){a=a|0;Yq(a+8|0);return}function br(a){a=a|0;Yq(a+8|0);mj(a);return}function cr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=r;r=r+416|0;d=h+8|0;c=h;k[c>>2]=d+400;dr(a+8|0,d,c,e,f,g);a=k[c>>2]|0;c=k[b>>2]|0;if((d|0)!=(a|0)){e=d;do{d=k[e>>2]|0;if(!c)c=0;else{f=c+24|0;g=k[f>>2]|0;if((g|0)==(k[c+28>>2]|0))d=Vb[k[(k[c>>2]|0)+52>>2]&63](c,d)|0;else{k[f>>2]=g+4;k[g>>2]=d}c=(d|0)==-1?0:c}e=e+4|0}while((e|0)!=(a|0))}r=h;return c|0}function dr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+128|0;j=g+16|0;l=g+12|0;h=g;i=g+8|0;k[l>>2]=j+100;$q(a,j,l,d,e,f);e=h;k[e>>2]=0;k[e+4>>2]=0;k[i>>2]=j;e=(k[c>>2]|0)-b>>2;f=Ak(k[a>>2]|0)|0;x=0;e=Ea(18,b|0,i|0,e|0,h|0)|0;a=x;x=0;if(a&1){e=Wa()|0;if((f|0)!=0?(x=0,ta(75,f|0)|0,l=x,x=0,l&1):0){l=Wa(0)|0;oc(l)}fb(e|0)}if((f|0)!=0?(x=0,ta(75,f|0)|0,l=x,x=0,l&1):0){l=Wa(0)|0;oc(l)}if((e|0)==-1)$r(58955);else{k[c>>2]=b+(e<<2);r=g;return}}function er(a){a=a|0;return}function fr(a){a=a|0;mj(a);return}function gr(a){a=a|0;return 127}function hr(a){a=a|0;return 127}function ir(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function jr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function kr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function lr(a,b){a=a|0;b=b|0;Rm(a,1,45);return}function mr(a){a=a|0;return 0}function nr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function or(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function pr(a){a=a|0;return}function qr(a){a=a|0;mj(a);return}function rr(a){a=a|0;return 127}function sr(a){a=a|0;return 127}function tr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function ur(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function vr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function wr(a,b){a=a|0;b=b|0;Rm(a,1,45);return}function xr(a){a=a|0;return 0}function yr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function zr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Ar(a){a=a|0;return}function Br(a){a=a|0;mj(a);return}function Cr(a){a=a|0;return 2147483647}function Dr(a){a=a|0;return 2147483647}function Er(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Fr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Gr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Hr(a,b){a=a|0;b=b|0;dn(a,1,45);return}function Ir(a){a=a|0;return 0}function Jr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Kr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Lr(a){a=a|0;return}function Mr(a){a=a|0;mj(a);return}function Nr(a){a=a|0;return 2147483647}function Or(a){a=a|0;return 2147483647}function Pr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Qr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Rr(a,b){a=a|0;b=b|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Sr(a,b){a=a|0;b=b|0;dn(a,1,45);return}function Tr(a){a=a|0;return 0}function Ur(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Vr(a,b){a=a|0;b=b|0;i[a>>0]=2;i[a+1>>0]=3;i[a+2>>0]=0;i[a+3>>0]=4;return}function Wr(a){a=a|0;return}function Xr(a){a=a|0;mj(a);return}function Yr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;B=r;r=r+240|0;z=B+24|0;A=B;a=B+136|0;D=B+16|0;y=B+12|0;C=B+8|0;n=B+134|0;j=B+4|0;w=B+124|0;k[D>>2]=a;E=D+4|0;k[E>>2]=189;l=a+100|0;x=0;h=ta(68,e|0)|0;v=x;x=0;if(!(v&1)){k[C>>2]=h;x=0;a=Aa(37,C|0,44220)|0;v=x;x=0;a:do if(!(v&1)?(i[n>>0]=0,k[j>>2]=k[c>>2],m=k[e+4>>2]|0,x=0,k[z>>2]=k[j>>2],m=ua(1,b|0,z|0,d|0,C|0,m|0,f|0,n|0,a|0,D|0,y|0,l|0)|0,v=x,x=0,!(v&1)):0){b:do if(m){x=0;Ea(k[(k[a>>2]|0)+32>>2]|0,a|0,58976,58986,w|0)|0;v=x;x=0;if(v&1){G=10;break a}j=k[y>>2]|0;l=k[D>>2]|0;a=j-l|0;if((a|0)>98){a=Pl(a+2|0)|0;h=a;if(!a){x=0;Ga(6);v=x;x=0;if(!(v&1)){a=0;G=13}}else G=13}else{h=0;a=z;G=13}do if((G|0)==13){if(i[n>>0]|0){i[a>>0]=45;a=a+1|0}u=w+10|0;v=w;if(l>>>0>>0){m=w+1|0;d=m+1|0;e=d+1|0;n=e+1|0;o=n+1|0;p=o+1|0;q=p+1|0;s=q+1|0;t=s+1|0;do{j=i[l>>0]|0;do if((i[w>>0]|0)!=j<<24>>24)if((i[m>>0]|0)!=j<<24>>24)if((i[d>>0]|0)!=j<<24>>24)if((i[e>>0]|0)!=j<<24>>24)if((i[n>>0]|0)==j<<24>>24)j=n;else{if((i[o>>0]|0)==j<<24>>24){j=o;break}if((i[p>>0]|0)==j<<24>>24){j=p;break}if((i[q>>0]|0)==j<<24>>24){j=q;break}if((i[s>>0]|0)==j<<24>>24){j=s;break}j=(i[t>>0]|0)==j<<24>>24?t:u}else j=e;else j=d;else j=m;else j=w;while(0);i[a>>0]=i[58976+(j-v)>>0]|0;l=l+1|0;a=a+1|0}while(l>>>0<(k[y>>2]|0)>>>0)}i[a>>0]=0;k[A>>2]=g;if((jl(z,58987,A)|0)!=1?(x=0,qa(190,58991),g=x,x=0,g&1):0)break;if(h)Ql(h);break b}while(0);a=Wa()|0;if(!h){j=a;h=D;break a}Ql(h);j=a;h=D;break a}while(0);a=k[b>>2]|0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1){G=10;break a}if((a|0)==-1){k[b>>2]=0;a=0;break}else{a=k[b>>2]|0;break}}}else a=0;while(0);h=(a|0)==0;a=k[c>>2]|0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1){G=10;break a}if((a|0)==-1){k[c>>2]=0;G=37;break}}if(!h)G=38}else G=37;while(0);if((G|0)==37?h:0)G=38;if((G|0)==38)k[f>>2]=k[f>>2]|2;h=k[b>>2]|0;zm(k[C>>2]|0)|0;a=k[D>>2]|0;k[D>>2]=0;if((a|0)!=0?(x=0,qa(k[E>>2]|0,a|0),G=x,x=0,G&1):0){G=Wa(0)|0;oc(G)}r=B;return h|0}else G=10;while(0);if((G|0)==10){j=Wa()|0;h=D}zm(k[C>>2]|0)|0;a=k[h>>2]|0;k[h>>2]=0;if(!a)F=j;else{h=k[E>>2]|0;G=45}}else{j=Wa()|0;k[D>>2]=0;h=189;G=45}if((G|0)==45){x=0;qa(h|0,a|0);G=x;x=0;if(G&1){G=Wa(0)|0;oc(G)}else F=j}fb(F|0);return 0}function Zr(a){a=a|0;return}function _r(a,b,c,d,e,f,g,h,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;ba=r;r=r+512|0;P=ba+88|0;t=ba+96|0;da=ba+80|0;T=ba+72|0;S=ba+68|0;U=ba+500|0;Q=ba+497|0;V=ba+496|0;Y=ba+56|0;aa=ba+44|0;_=ba+32|0;Z=ba+20|0;$=ba+8|0;R=ba+4|0;X=ba;k[P>>2]=o;k[da>>2]=t;ca=da+4|0;k[ca>>2]=189;k[T>>2]=t;k[S>>2]=t+400;k[Y>>2]=0;k[Y+4>>2]=0;k[Y+8>>2]=0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[_>>2]=0;k[_+4>>2]=0;k[_+8>>2]=0;k[Z>>2]=0;k[Z+4>>2]=0;k[Z+8>>2]=0;k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;x=0;za(1,c|0,d|0,U|0,Q|0,V|0,Y|0,aa|0,_|0,Z|0,R|0);O=x;x=0;a:do if(O&1)h=Wa()|0;else{k[n>>2]=k[m>>2];I=h+8|0;J=_+4|0;K=Z+4|0;L=Z+8|0;M=Z+1|0;N=_+8|0;O=_+1|0;z=(e&512|0)!=0;A=aa+8|0;B=aa+1|0;C=aa+4|0;D=$+4|0;E=$+8|0;F=$+1|0;G=U+3|0;H=Y+4|0;y=0;s=0;b:while(1){o=k[a>>2]|0;do if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}if((o|0)==-1){k[a>>2]=0;o=0;break}else{o=k[a>>2]|0;break}}}else o=0;while(0);o=(o|0)==0;h=k[b>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(o){w=h;break}else{W=235;break b}x=0;c=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=24;break b}if((c|0)!=-1)if(o){w=h;break}else{W=235;break b}else{k[b>>2]=0;W=15;break}}else W=15;while(0);if((W|0)==15){W=0;if(o){W=235;break}else w=0}c:do switch(i[U+y>>0]|0){case 1:{if((y|0)!=3){o=k[a>>2]|0;h=k[o+12>>2]|0;if((h|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;W=x;x=0;if(W&1){W=24;break b}}else o=l[h>>0]|0;if((o&255)<<24>>24<=-1){W=40;break b}if(!(j[(k[I>>2]|0)+(o<<24>>24<<1)>>1]&8192)){W=40;break b}o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;W=x;x=0;if(W&1){W=24;break b}}else{k[h>>2]=c+1;o=l[c>>0]|0}x=0;ra(67,$|0,o&255|0);W=x;x=0;if(W&1){W=24;break b}else{o=w;d=w;W=42}}break}case 0:{if((y|0)!=3){o=w;d=w;W=42}break}case 3:{h=i[_>>0]|0;o=(h&1)==0?(h&255)>>>1:k[J>>2]|0;c=i[Z>>0]|0;d=(c&1)==0?(c&255)>>>1:k[K>>2]|0;if((o|0)!=(0-d|0)){if(!o){o=k[a>>2]|0;h=k[o+12>>2]|0;if((h|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}h=i[Z>>0]|0}else{o=l[h>>0]|0;h=c}if((o&255)<<24>>24!=(i[((h&1)==0?M:k[L>>2]|0)>>0]|0))break c;o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}}else k[h>>2]=c+1;i[g>>0]=1;w=i[Z>>0]|0;s=((w&1)==0?(w&255)>>>1:k[K>>2]|0)>>>0>1?Z:s;break c}e=k[a>>2]|0;p=k[e+12>>2]|0;c=k[e+16>>2]|0;o=(p|0)==(c|0);if(!d){if(o){x=0;o=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){W=24;break b}h=i[_>>0]|0}else o=l[p>>0]|0;if((o&255)<<24>>24!=(i[((h&1)==0?O:k[N>>2]|0)>>0]|0)){i[g>>0]=1;break c}o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}}else k[h>>2]=c+1;w=i[_>>0]|0;s=((w&1)==0?(w&255)>>>1:k[J>>2]|0)>>>0>1?_:s;break c}if(o){x=0;o=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){W=24;break b}c=k[a>>2]|0;h=i[_>>0]|0;e=c;p=k[c+12>>2]|0;c=k[c+16>>2]|0}else o=l[p>>0]|0;d=e+12|0;c=(p|0)==(c|0);if((o&255)<<24>>24==(i[((h&1)==0?O:k[N>>2]|0)>>0]|0)){if(c){x=0;ta(k[(k[e>>2]|0)+40>>2]|0,e|0)|0;w=x;x=0;if(w&1){W=24;break b}}else k[d>>2]=p+1;w=i[_>>0]|0;s=((w&1)==0?(w&255)>>>1:k[J>>2]|0)>>>0>1?_:s;break c}if(c){x=0;o=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){W=24;break b}}else o=l[p>>0]|0;if((o&255)<<24>>24!=(i[((i[Z>>0]&1)==0?M:k[L>>2]|0)>>0]|0)){W=104;break b}o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}}else k[h>>2]=c+1;i[g>>0]=1;w=i[Z>>0]|0;s=((w&1)==0?(w&255)>>>1:k[K>>2]|0)>>>0>1?Z:s}break}case 2:{if(!(y>>>0<2|(s|0)!=0)?!(z|(y|0)==2&(i[G>>0]|0)!=0):0){s=0;break c}u=i[aa>>0]|0;o=(u&1)==0;v=k[A>>2]|0;c=o?B:v;q=c;d:do if((y|0)!=0?(l[U+(y+-1)>>0]|0)<2:0){p=o?(u&255)>>>1:k[C>>2]|0;d=c+p|0;e=k[I>>2]|0;e:do if(!p)h=q;else{p=c;h=q;do{o=i[p>>0]|0;if(o<<24>>24<=-1)break e;if(!(j[e+(o<<24>>24<<1)>>1]&8192))break e;p=p+1|0;h=p}while((p|0)!=(d|0))}while(0);d=h-q|0;e=i[$>>0]|0;o=(e&1)==0;e=o?(e&255)>>>1:k[D>>2]|0;if(e>>>0>=d>>>0){o=o?F:k[E>>2]|0;p=o+e|0;if((h|0)!=(q|0)){o=o+(e-d)|0;while(1){if((i[o>>0]|0)!=(i[c>>0]|0)){h=q;break d}o=o+1|0;if((o|0)==(p|0))break;else c=c+1|0}}}else h=q}else h=q;while(0);o=(u&1)==0;o=(o?B:v)+(o?(u&255)>>>1:k[C>>2]|0)|0;f:do if((h|0)!=(o|0)){e=w;d=w;o=h;while(1){h=k[a>>2]|0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;h=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=21;break b}if((h|0)==-1){k[a>>2]=0;h=0;break}else{h=k[a>>2]|0;break}}}else h=0;while(0);c=(h|0)==0;do if(d){if((k[d+12>>2]|0)!=(k[d+16>>2]|0))if(c){h=e;p=d;break}else break f;x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){W=21;break b}if((h|0)!=-1)if(c^(e|0)==0){h=e;p=e;break}else break f;else{k[b>>2]=0;h=0;W=131;break}}else{h=e;W=131}while(0);if((W|0)==131){W=0;if(c)break f;else p=0}c=k[a>>2]|0;d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){W=21;break b}}else c=l[d>>0]|0;if((c&255)<<24>>24!=(i[o>>0]|0))break f;c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){x=0;ta(k[(k[c>>2]|0)+40>>2]|0,c|0)|0;w=x;x=0;if(w&1){W=21;break b}}else k[d>>2]=e+1;o=o+1|0;c=i[aa>>0]|0;w=(c&1)==0;c=(w?B:k[A>>2]|0)+(w?(c&255)>>>1:k[C>>2]|0)|0;if((o|0)==(c|0)){o=c;break}else{e=h;d=p}}}while(0);if(z?(w=i[aa>>0]|0,v=(w&1)==0,(o|0)!=((v?B:k[A>>2]|0)+(v?(w&255)>>>1:k[C>>2]|0)|0)):0){W=143;break b}break}case 4:{q=i[V>>0]|0;h=w;e=w;o=0;g:while(1){c=k[a>>2]|0;do if(c){if((k[c+12>>2]|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){W=23;break b}if((c|0)==-1){k[a>>2]=0;c=0;break}else{c=k[a>>2]|0;break}}}else c=0;while(0);d=(c|0)==0;do if(e){if((k[e+12>>2]|0)!=(k[e+16>>2]|0))if(d){p=h;break}else{d=h;break g}x=0;c=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){W=23;break b}if((c|0)!=-1)if(d^(h|0)==0){p=h;e=h;break}else{d=h;break g}else{k[b>>2]=0;h=0;W=156;break}}else W=156;while(0);if((W|0)==156){W=0;if(d){d=h;break}else{p=h;e=0}}h=k[a>>2]|0;c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0)){x=0;h=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=23;break b}}else h=l[c>>0]|0;c=h&255;if(c<<24>>24>-1?(j[(k[I>>2]|0)+(h<<24>>24<<1)>>1]&2048)!=0:0){h=k[n>>2]|0;if((h|0)==(k[P>>2]|0)){x=0;Fa(12,m|0,n|0,P|0);w=x;x=0;if(w&1){W=23;break b}h=k[n>>2]|0}k[n>>2]=h+1;i[h>>0]=c;o=o+1|0}else{w=i[Y>>0]|0;if(!(c<<24>>24==q<<24>>24&((o|0)!=0?(((w&1)==0?(w&255)>>>1:k[H>>2]|0)|0)!=0:0))){d=p;break}if((t|0)==(k[S>>2]|0)){x=0;Fa(13,da|0,T|0,S|0);w=x;x=0;if(w&1){W=23;break b}t=k[T>>2]|0}w=t+4|0;k[T>>2]=w;k[t>>2]=o;t=w;o=0}h=k[a>>2]|0;c=h+12|0;d=k[c>>2]|0;if((d|0)==(k[h+16>>2]|0)){x=0;ta(k[(k[h>>2]|0)+40>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=23;break b}else{h=p;continue}}else{k[c>>2]=d+1;h=p;continue}}if((o|0)!=0?(k[da>>2]|0)!=(t|0):0){if((t|0)==(k[S>>2]|0)){x=0;Fa(13,da|0,T|0,S|0);w=x;x=0;if(w&1){W=24;break b}t=k[T>>2]|0}w=t+4|0;k[T>>2]=w;k[t>>2]=o;t=w}p=k[R>>2]|0;if((p|0)>0){o=k[a>>2]|0;do if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}if((o|0)==-1){k[a>>2]=0;o=0;break}else{o=k[a>>2]|0;break}}}else o=0;while(0);o=(o|0)==0;do if(d){if((k[d+12>>2]|0)==(k[d+16>>2]|0)){x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){W=24;break b}if((h|0)==-1){k[b>>2]=0;W=193;break}}if(!o){W=198;break b}}else W=193;while(0);if((W|0)==193){W=0;if(o){W=198;break b}else d=0}o=k[a>>2]|0;h=k[o+12>>2]|0;if((h|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}}else o=l[h>>0]|0;if((o&255)<<24>>24!=(i[Q>>0]|0)){W=198;break b}o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=24;break b}}else k[h>>2]=c+1;if((p|0)>0){e=d;c=d;q=p;while(1){o=k[a>>2]|0;do if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=22;break b}if((o|0)==-1){k[a>>2]=0;o=0;break}else{o=k[a>>2]|0;break}}}else o=0;while(0);h=(o|0)==0;do if(c){if((k[c+12>>2]|0)!=(k[c+16>>2]|0))if(h){o=e;p=c;break}else{W=222;break b}x=0;o=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){W=22;break b}if((o|0)!=-1)if(h^(e|0)==0){o=e;p=e;break}else{W=222;break b}else{k[b>>2]=0;o=0;W=215;break}}else{o=e;W=215}while(0);if((W|0)==215){W=0;if(h){W=222;break b}else p=0}h=k[a>>2]|0;c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0)){x=0;h=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=22;break b}}else h=l[c>>0]|0;if((h&255)<<24>>24<=-1){W=222;break b}if(!(j[(k[I>>2]|0)+(h<<24>>24<<1)>>1]&2048)){W=222;break b}if((k[n>>2]|0)==(k[P>>2]|0)?(x=0,Fa(12,m|0,n|0,P|0),w=x,x=0,w&1):0){W=22;break b}h=k[a>>2]|0;c=k[h+12>>2]|0;if((c|0)==(k[h+16>>2]|0)){x=0;h=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=22;break b}}else h=l[c>>0]|0;c=k[n>>2]|0;k[n>>2]=c+1;i[c>>0]=h;h=q;q=q+-1|0;k[R>>2]=q;c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){x=0;ta(k[(k[c>>2]|0)+40>>2]|0,c|0)|0;w=x;x=0;if(w&1){W=22;break b}}else k[d>>2]=e+1;if((h|0)<=1)break;else{e=o;c=p}}}}if((k[n>>2]|0)==(k[m>>2]|0)){W=233;break b}break}default:{}}while(0);h:do if((W|0)==42)while(1){W=0;h=k[a>>2]|0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;h=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;w=x;x=0;if(w&1){W=20;break b}if((h|0)==-1){k[a>>2]=0;h=0;break}else{h=k[a>>2]|0;break}}}else h=0;while(0);c=(h|0)==0;do if(d){if((k[d+12>>2]|0)!=(k[d+16>>2]|0))if(c){e=o;break}else break h;x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){W=20;break b}if((h|0)!=-1)if(c^(o|0)==0){e=o;d=o;break}else break h;else{k[b>>2]=0;o=0;W=54;break}}else W=54;while(0);if((W|0)==54){W=0;if(c)break h;else{e=o;d=0}}o=k[a>>2]|0;h=k[o+12>>2]|0;if((h|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){W=20;break b}}else o=l[h>>0]|0;if((o&255)<<24>>24<=-1)break h;if(!(j[(k[I>>2]|0)+(o<<24>>24<<1)>>1]&8192))break h;o=k[a>>2]|0;h=o+12|0;c=k[h>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+40>>2]|0,o|0)|0;W=x;x=0;if(W&1){W=20;break b}}else{k[h>>2]=c+1;o=l[c>>0]|0}x=0;ra(67,$|0,o&255|0);W=x;x=0;if(W&1){W=20;break b}else{o=e;W=42}}while(0);y=y+1|0;if(y>>>0>=4){W=235;break}}i:switch(W|0){case 20:{h=Wa()|0;break a}case 21:{h=Wa()|0;break a}case 22:{h=Wa()|0;break a}case 23:{h=Wa()|0;break a}case 24:{h=Wa()|0;break a}case 40:{k[f>>2]=k[f>>2]|4;h=0;break}case 104:{k[f>>2]=k[f>>2]|4;h=0;break}case 143:{k[f>>2]=k[f>>2]|4;h=0;break}case 198:{k[f>>2]=k[f>>2]|4;h=0;break}case 222:{k[f>>2]=k[f>>2]|4;h=0;break}case 233:{k[f>>2]=k[f>>2]|4;h=0;break}case 235:{j:do if(s){e=s+1|0;p=s+8|0;q=s+4|0;c=1;k:while(1){o=i[s>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=k[q>>2]|0;if(c>>>0>=o>>>0)break j;o=k[a>>2]|0;do if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;n=x;x=0;if(n&1){W=19;break k}if((o|0)==-1){k[a>>2]=0;o=0;break}else{o=k[a>>2]|0;break}}}else o=0;while(0);h=(o|0)==0;o=k[b>>2]|0;do if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;n=x;x=0;if(n&1){W=19;break k}if((o|0)==-1){k[b>>2]=0;W=253;break}}if(!h){W=260;break k}}else W=253;while(0);if((W|0)==253?(W=0,h):0){W=260;break}o=k[a>>2]|0;h=k[o+12>>2]|0;if((h|0)==(k[o+16>>2]|0)){x=0;o=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;n=x;x=0;if(n&1){W=19;break}}else o=l[h>>0]|0;if(!(i[s>>0]&1))h=e;else h=k[p>>2]|0;if((o&255)<<24>>24!=(i[h+c>>0]|0)){W=260;break}o=c+1|0;h=k[a>>2]|0;c=h+12|0;d=k[c>>2]|0;if((d|0)==(k[h+16>>2]|0)){x=0;ta(k[(k[h>>2]|0)+40>>2]|0,h|0)|0;n=x;x=0;if(n&1){W=19;break}else{c=o;continue}}else{k[c>>2]=d+1;c=o;continue}}if((W|0)==19){h=Wa()|0;break a}else if((W|0)==260){k[f>>2]=k[f>>2]|4;h=0;break i}}while(0);o=k[da>>2]|0;if((o|0)!=(t|0)?(k[X>>2]=0,cs(Y,o,t,X),(k[X>>2]|0)!=0):0){k[f>>2]=k[f>>2]|4;h=0}else h=1;break}}Sm($);Sm(Z);Sm(_);Sm(aa);Sm(Y);o=k[da>>2]|0;k[da>>2]=0;if((o|0)!=0?(x=0,qa(k[ca>>2]|0,o|0),da=x,x=0,da&1):0){da=Wa(0)|0;oc(da)}r=ba;return h|0}while(0);Sm($);Sm(Z);Sm(_);Sm(aa);Sm(Y);o=k[da>>2]|0;k[da>>2]=0;if((o|0)!=0?(x=0,qa(k[ca>>2]|0,o|0),da=x,x=0,da&1):0){da=Wa(0)|0;oc(da)}fb(h|0);return 0}function $r(a){a=a|0;var b=0;b=Va(8)|0;x=0;ra(90,b|0,a|0);a=x;x=0;if(a&1){a=Wa()|0;Ua(b|0);fb(a|0)}else ub(b|0,616,80)}function as(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;v=r;r=r+144|0;h=v+24|0;a=v+32|0;w=v+16|0;q=v+8|0;n=v+4|0;o=v+28|0;j=v;k[w>>2]=a;A=w+4|0;k[A>>2]=189;l=a+100|0;x=0;u=ta(68,e|0)|0;m=x;x=0;if(!(m&1)){k[n>>2]=u;x=0;m=Aa(37,n|0,44220)|0;a=x;x=0;a:do if(!(a&1)?(i[o>>0]=0,s=k[c>>2]|0,k[j>>2]=s,p=k[e+4>>2]|0,t=s,x=0,k[h>>2]=k[j>>2],p=ua(1,b|0,h|0,d|0,n|0,p|0,f|0,o|0,m|0,w|0,q|0,l|0)|0,e=x,x=0,!(e&1)):0){if(p){if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}if(i[o>>0]|0){x=0;a=Aa(k[(k[m>>2]|0)+28>>2]|0,m|0,45)|0;e=x;x=0;if(e&1)break;x=0;ra(67,g|0,a|0);e=x;x=0;if(e&1)break}x=0;j=Aa(k[(k[m>>2]|0)+28>>2]|0,m|0,48)|0;e=x;x=0;if(e&1)break;a=k[w>>2]|0;l=k[q>>2]|0;h=l+-1|0;b:do if(a>>>0>>0)do{if((i[a>>0]|0)!=j<<24>>24)break b;a=a+1|0}while(a>>>0>>0);while(0);x=0;va(32,g|0,a|0,l|0)|0;g=x;x=0;if(g&1)break}a=k[b>>2]|0;do if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1)break a;if((a|0)==-1){k[b>>2]=0;a=0;break}else{a=k[b>>2]|0;break}}}else a=0;while(0);h=(a|0)==0;do if(s){if((k[t+12>>2]|0)==(k[t+16>>2]|0)){x=0;a=ta(k[(k[s>>2]|0)+36>>2]|0,t|0)|0;t=x;x=0;if(t&1)break a;if((a|0)==-1){k[c>>2]=0;z=29;break}}if(!h)z=30}else z=29;while(0);if((z|0)==29?h:0)z=30;if((z|0)==30)k[f>>2]=k[f>>2]|2;h=k[b>>2]|0;zm(u)|0;a=k[w>>2]|0;k[w>>2]=0;if((a|0)!=0?(x=0,qa(k[A>>2]|0,a|0),A=x,x=0,A&1):0){A=Wa(0)|0;oc(A)}r=v;return h|0}while(0);h=Wa()|0;zm(u)|0;a=k[w>>2]|0;k[w>>2]=0;if(!a)y=h;else z=36}else{h=Wa()|0;k[w>>2]=0;z=36}if((z|0)==36){x=0;qa(k[A>>2]|0,a|0);A=x;x=0;if(A&1){A=Wa(0)|0;oc(A)}else y=h}fb(y|0);return 0}function bs(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0;z=r;r=r+112|0;m=z+100|0;n=z+88|0;o=z+76|0;p=z+64|0;q=z+52|0;s=z+48|0;t=z+36|0;u=z+24|0;v=z+12|0;w=z;do if(a){a=Ss(b,43828)|0;Mb[k[(k[a>>2]|0)+44>>2]&127](m,a);w=k[m>>2]|0;i[c>>0]=w;i[c+1>>0]=w>>8;i[c+2>>0]=w>>16;i[c+3>>0]=w>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](n,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;Sm(n);Mb[k[(k[a>>2]|0)+28>>2]&127](o,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}x=0;ra(91,h|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[h>>2]=k[o>>2];k[h+4>>2]=k[o+4>>2];k[h+8>>2]=k[o+8>>2];k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;Sm(o);h=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;i[d>>0]=h;h=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;i[e>>0]=h;Mb[k[(k[a>>2]|0)+20>>2]&127](p,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}x=0;ra(91,f|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)};k[f>>2]=k[p>>2];k[f+4>>2]=k[p+4>>2];k[f+8>>2]=k[p+8>>2];k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;Sm(p);Mb[k[(k[a>>2]|0)+24>>2]&127](q,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else{k[g>>2]=k[q>>2];k[g+4>>2]=k[q+4>>2];k[g+8>>2]=k[q+8>>2];k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;Sm(q);y=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}else{a=Ss(b,43764)|0;Mb[k[(k[a>>2]|0)+44>>2]&127](s,a);s=k[s>>2]|0;i[c>>0]=s;i[c+1>>0]=s>>8;i[c+2>>0]=s>>16;i[c+3>>0]=s>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](t,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[j>>2]=k[t>>2];k[j+4>>2]=k[t+4>>2];k[j+8>>2]=k[t+8>>2];k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;Sm(t);Mb[k[(k[a>>2]|0)+28>>2]&127](u,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}x=0;ra(91,h|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[h>>2]=k[u>>2];k[h+4>>2]=k[u+4>>2];k[h+8>>2]=k[u+8>>2];k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;Sm(u);h=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;i[d>>0]=h;h=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;i[e>>0]=h;Mb[k[(k[a>>2]|0)+20>>2]&127](v,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}x=0;ra(91,f|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)};k[f>>2]=k[v>>2];k[f+4>>2]=k[v+4>>2];k[f+8>>2]=k[v+8>>2];k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;Sm(v);Mb[k[(k[a>>2]|0)+24>>2]&127](w,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else{k[g>>2]=k[w>>2];k[g+4>>2]=k[w+4>>2];k[g+8>>2]=k[w+8>>2];k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;Sm(w);y=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}while(0);k[l>>2]=y;r=z;return}function cs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=i[a>>0]|0;g=a+4|0;f=k[g>>2]|0;a:do if(((e&1)==0?(e&255)>>>1:f)|0){if((b|0)!=(c|0)){e=c+-4|0;if(e>>>0>b>>>0){f=b;do{h=k[f>>2]|0;k[f>>2]=k[e>>2];k[e>>2]=h;f=f+4|0;e=e+-4|0}while(f>>>0>>0)}e=i[a>>0]|0;f=k[g>>2]|0}h=(e&1)==0;g=h?a+1|0:k[a+8>>2]|0;c=c+-4|0;a=g+(h?(e&255)>>>1:f)|0;f=i[g>>0]|0;e=f<<24>>24<1|f<<24>>24==127;b:do if(c>>>0>b>>>0){while(1){if(!e?(f<<24>>24|0)!=(k[b>>2]|0):0)break;g=(a-g|0)>1?g+1|0:g;b=b+4|0;f=i[g>>0]|0;e=f<<24>>24<1|f<<24>>24==127;if(b>>>0>=c>>>0)break b}k[d>>2]=4;break a}while(0);if(!e?((k[c>>2]|0)+-1|0)>>>0>=f<<24>>24>>>0:0)k[d>>2]=4}while(0);return}function ds(a){a=a|0;return}function es(a){a=a|0;mj(a);return}function fs(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;B=r;r=r+576|0;w=B+424|0;A=B;a=B+24|0;D=B+16|0;y=B+12|0;C=B+8|0;n=B+464|0;j=B+4|0;z=B+468|0;k[D>>2]=a;F=D+4|0;k[F>>2]=189;l=a+400|0;x=0;h=ta(68,e|0)|0;v=x;x=0;if(!(v&1)){k[C>>2]=h;x=0;a=Aa(37,C|0,44212)|0;v=x;x=0;a:do if(!(v&1)?(i[n>>0]=0,k[j>>2]=k[c>>2],m=k[e+4>>2]|0,x=0,k[w>>2]=k[j>>2],m=ua(2,b|0,w|0,d|0,C|0,m|0,f|0,n|0,a|0,D|0,y|0,l|0)|0,v=x,x=0,!(v&1)):0){b:do if(m){x=0;Ea(k[(k[a>>2]|0)+48>>2]|0,a|0,59007,59017,w|0)|0;v=x;x=0;if(v&1){G=10;break a}j=k[y>>2]|0;l=k[D>>2]|0;a=j-l|0;if((a|0)>392){a=Pl((a>>2)+2|0)|0;h=a;if(!a){x=0;Ga(6);v=x;x=0;if(!(v&1)){a=0;G=13}}else G=13}else{h=0;a=z;G=13}do if((G|0)==13){if(i[n>>0]|0){i[a>>0]=45;a=a+1|0}u=w+40|0;v=w;if(l>>>0>>0){m=w+4|0;d=m+4|0;e=d+4|0;n=e+4|0;o=n+4|0;p=o+4|0;q=p+4|0;s=q+4|0;t=s+4|0;do{j=k[l>>2]|0;do if((k[w>>2]|0)!=(j|0))if((k[m>>2]|0)!=(j|0))if((k[d>>2]|0)!=(j|0))if((k[e>>2]|0)!=(j|0))if((k[n>>2]|0)==(j|0))j=n;else{if((k[o>>2]|0)==(j|0)){j=o;break}if((k[p>>2]|0)==(j|0)){j=p;break}if((k[q>>2]|0)==(j|0)){j=q;break}if((k[s>>2]|0)==(j|0)){j=s;break}j=(k[t>>2]|0)==(j|0)?t:u}else j=e;else j=d;else j=m;else j=w;while(0);i[a>>0]=i[59007+(j-v>>2)>>0]|0;l=l+4|0;a=a+1|0}while(l>>>0<(k[y>>2]|0)>>>0)}i[a>>0]=0;k[A>>2]=g;if((jl(z,58987,A)|0)!=1?(x=0,qa(190,58991),g=x,x=0,g&1):0)break;if(h)Ql(h);break b}while(0);a=Wa()|0;if(!h){j=a;h=D;break a}Ql(h);j=a;h=D;break a}while(0);a=k[b>>2]|0;do if(a){h=k[a+12>>2]|0;if((h|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1){G=10;break a}}else a=k[h>>2]|0;if((a|0)==-1){k[b>>2]=0;j=1;break}else{j=(k[b>>2]|0)==0;break}}else j=1;while(0);a=k[c>>2]|0;do if(a){h=k[a+12>>2]|0;if((h|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1){G=10;break a}}else a=k[h>>2]|0;if((a|0)!=-1)if(j)break;else{G=40;break}else{k[c>>2]=0;G=38;break}}else G=38;while(0);if((G|0)==38?j:0)G=40;if((G|0)==40)k[f>>2]=k[f>>2]|2;h=k[b>>2]|0;zm(k[C>>2]|0)|0;a=k[D>>2]|0;k[D>>2]=0;if((a|0)!=0?(x=0,qa(k[F>>2]|0,a|0),G=x,x=0,G&1):0){G=Wa(0)|0;oc(G)}r=B;return h|0}else G=10;while(0);if((G|0)==10){j=Wa()|0;h=D}zm(k[C>>2]|0)|0;a=k[h>>2]|0;k[h>>2]=0;if(!a)E=j;else{h=k[F>>2]|0;G=47}}else{j=Wa()|0;k[D>>2]=0;h=189;G=47}if((G|0)==47){x=0;qa(h|0,a|0);G=x;x=0;if(G&1){G=Wa(0)|0;oc(G)}else E=j}fb(E|0);return 0}function gs(a,b,c,d,e,f,g,h,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;Y=r;r=r+512|0;K=Y+96|0;o=Y+104|0;_=Y+88|0;O=Y+80|0;N=Y+76|0;P=Y+504|0;L=Y+72|0;Q=Y+68|0;T=Y+56|0;X=Y+44|0;V=Y+32|0;U=Y+20|0;W=Y+8|0;M=Y+4|0;S=Y;k[K>>2]=n;k[_>>2]=o;Z=_+4|0;k[Z>>2]=189;k[O>>2]=o;k[N>>2]=o+400;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[X>>2]=0;k[X+4>>2]=0;k[X+8>>2]=0;k[V>>2]=0;k[V+4>>2]=0;k[V+8>>2]=0;k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[W>>2]=0;k[W+4>>2]=0;k[W+8>>2]=0;x=0;za(2,c|0,d|0,P|0,L|0,Q|0,T|0,X|0,V|0,U|0,M|0);J=x;x=0;a:do if(J&1)c=Wa()|0;else{k[m>>2]=k[j>>2];G=V+4|0;H=U+4|0;I=U+8|0;J=V+8|0;z=(e&512|0)!=0;A=X+8|0;B=X+4|0;C=W+4|0;D=W+8|0;E=P+3|0;F=T+4|0;y=0;q=0;b:while(1){n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=26;break b}}else n=k[c>>2]|0;if((n|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);c=k[b>>2]|0;do if(c){n=k[c+12>>2]|0;if((n|0)==(k[c+16>>2]|0)){x=0;n=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=26;break b}}else n=k[n>>2]|0;if((n|0)!=-1)if(d){w=c;break}else{s=o;R=244;break b}else{k[b>>2]=0;R=16;break}}else R=16;while(0);if((R|0)==16){R=0;if(d){s=o;R=244;break}else w=0}c:do switch(i[P+y>>0]|0){case 1:{if((y|0)!=3){n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;R=x;x=0;if(R&1){R=26;break b}}else n=k[c>>2]|0;x=0;n=va(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,n|0)|0;R=x;x=0;if(R&1){R=26;break b}if(!n){R=42;break b}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+40>>2]|0,n|0)|0;R=x;x=0;if(R&1){R=26;break b}}else{k[c>>2]=d+4;n=k[d>>2]|0}x=0;ra(92,W|0,n|0);R=x;x=0;if(R&1){R=26;break b}else{n=w;e=w;R=44}}else n=o;break}case 0:{if((y|0)==3)n=o;else{n=w;e=w;R=44}break}case 3:{c=i[V>>0]|0;n=(c&1)==0?(c&255)>>>1:k[G>>2]|0;d=i[U>>0]|0;e=(d&1)==0?(d&255)>>>1:k[H>>2]|0;if((n|0)==(0-e|0))n=o;else{if(!n){n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=26;break b}c=i[U>>0]|0}else{n=k[c>>2]|0;c=d}if((n|0)!=(k[((c&1)==0?H:k[I>>2]|0)>>2]|0)){n=o;break c}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){x=0;ta(k[(k[n>>2]|0)+40>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=26;break b}}else k[c>>2]=d+4;i[g>>0]=1;w=i[U>>0]|0;n=o;q=((w&1)==0?(w&255)>>>1:k[H>>2]|0)>>>0>1?U:q;break c}p=k[a>>2]|0;s=k[p+12>>2]|0;d=k[p+16>>2]|0;n=(s|0)==(d|0);if(!e){if(n){x=0;n=ta(k[(k[p>>2]|0)+36>>2]|0,p|0)|0;w=x;x=0;if(w&1){R=26;break b}c=i[V>>0]|0}else n=k[s>>2]|0;if((n|0)!=(k[((c&1)==0?G:k[J>>2]|0)>>2]|0)){i[g>>0]=1;n=o;break c}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){x=0;ta(k[(k[n>>2]|0)+40>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=26;break b}}else k[c>>2]=d+4;w=i[V>>0]|0;n=o;q=((w&1)==0?(w&255)>>>1:k[G>>2]|0)>>>0>1?V:q;break c}if(n){x=0;n=ta(k[(k[p>>2]|0)+36>>2]|0,p|0)|0;w=x;x=0;if(w&1){R=26;break b}d=k[a>>2]|0;c=i[V>>0]|0;p=d;s=k[d+12>>2]|0;d=k[d+16>>2]|0}else n=k[s>>2]|0;e=p+12|0;d=(s|0)==(d|0);if((n|0)==(k[((c&1)==0?G:k[J>>2]|0)>>2]|0)){if(d){x=0;ta(k[(k[p>>2]|0)+40>>2]|0,p|0)|0;w=x;x=0;if(w&1){R=26;break b}}else k[e>>2]=s+4;w=i[V>>0]|0;n=o;q=((w&1)==0?(w&255)>>>1:k[G>>2]|0)>>>0>1?V:q;break c}if(d){x=0;n=ta(k[(k[p>>2]|0)+36>>2]|0,p|0)|0;w=x;x=0;if(w&1){R=26;break b}}else n=k[s>>2]|0;if((n|0)!=(k[((i[U>>0]&1)==0?H:k[I>>2]|0)>>2]|0)){R=107;break b}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){x=0;ta(k[(k[n>>2]|0)+40>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=26;break b}}else k[c>>2]=d+4;i[g>>0]=1;w=i[U>>0]|0;n=o;q=((w&1)==0?(w&255)>>>1:k[H>>2]|0)>>>0>1?U:q}break}case 2:{if(!(y>>>0<2|(q|0)!=0)?!(z|(y|0)==2&(i[E>>0]|0)!=0):0){n=o;q=0;break c}e=i[X>>0]|0;d=k[A>>2]|0;c=(e&1)==0?B:d;n=c;d:do if((y|0)!=0?(l[P+(y+-1)>>0]|0)<2:0){v=(e&1)==0;e:do if((c|0)!=((v?B:d)+((v?(e&255)>>>1:k[B>>2]|0)<<2)|0)){e=c;while(1){x=0;c=va(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,k[e>>2]|0)|0;v=x;x=0;if(v&1){R=23;break b}if(!c)break;e=e+4|0;n=e;c=i[X>>0]|0;d=k[A>>2]|0;v=(c&1)==0;if((e|0)==((v?B:d)+((v?(c&255)>>>1:k[B>>2]|0)<<2)|0)){e=c;break e}}e=i[X>>0]|0;d=k[A>>2]|0}while(0);s=(e&1)==0?B:d;c=s;t=n-c>>2;u=i[W>>0]|0;p=(u&1)==0;u=p?(u&255)>>>1:k[C>>2]|0;if(u>>>0>=t>>>0){p=p?C:k[D>>2]|0;v=p+(u<<2)|0;if(!t)c=n;else{p=p+(u-t<<2)|0;while(1){if((k[p>>2]|0)!=(k[s>>2]|0))break d;p=p+4|0;if((p|0)==(v|0)){c=n;break}else s=s+4|0}}}}else c=n;while(0);n=(e&1)==0;n=(n?B:d)+((n?(e&255)>>>1:k[B>>2]|0)<<2)|0;f:do if((c|0)!=(n|0)){p=w;e=w;n=c;while(1){c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=22;break b}}else c=k[d>>2]|0;if((c|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0)){x=0;c=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=22;break b}}else c=k[c>>2]|0;if((c|0)!=-1)if(d^(p|0)==0){c=p;s=p;break}else break f;else{k[b>>2]=0;c=0;R=136;break}}else{c=p;R=136}while(0);if((R|0)==136){R=0;if(d)break f;else s=0}d=k[a>>2]|0;e=k[d+12>>2]|0;if((e|0)==(k[d+16>>2]|0)){x=0;d=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){R=22;break b}}else d=k[e>>2]|0;if((d|0)!=(k[n>>2]|0))break f;d=k[a>>2]|0;e=d+12|0;p=k[e>>2]|0;if((p|0)==(k[d+16>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;w=x;x=0;if(w&1){R=22;break b}}else k[e>>2]=p+4;n=n+4|0;d=i[X>>0]|0;w=(d&1)==0;d=(w?B:k[A>>2]|0)+((w?(d&255)>>>1:k[B>>2]|0)<<2)|0;if((n|0)==(d|0)){n=d;break}else{p=c;e=s}}}while(0);if(z?(w=i[X>>0]|0,v=(w&1)==0,(n|0)!=((v?B:k[A>>2]|0)+((v?(w&255)>>>1:k[B>>2]|0)<<2)|0)):0){R=148;break b}else n=o;break}case 4:{u=k[Q>>2]|0;t=w;p=w;n=o;c=0;g:while(1){d=k[a>>2]|0;do if(d){e=k[d+12>>2]|0;if((e|0)==(k[d+16>>2]|0)){x=0;d=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){R=25;break b}}else d=k[e>>2]|0;if((d|0)==-1){k[a>>2]=0;e=1;break}else{e=(k[a>>2]|0)==0;break}}else e=1;while(0);do if(p){d=k[p+12>>2]|0;if((d|0)==(k[p+16>>2]|0)){x=0;d=ta(k[(k[p>>2]|0)+36>>2]|0,p|0)|0;w=x;x=0;if(w&1){R=25;break b}}else d=k[d>>2]|0;if((d|0)!=-1)if(e^(t|0)==0){d=t;s=t;break}else{o=t;break g}else{k[b>>2]=0;d=0;R=162;break}}else{d=t;R=162}while(0);if((R|0)==162){R=0;if(e){o=d;break}else s=0}e=k[a>>2]|0;o=k[e+12>>2]|0;if((o|0)==(k[e+16>>2]|0)){x=0;e=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=25;break b}}else e=k[o>>2]|0;x=0;o=va(k[(k[h>>2]|0)+12>>2]|0,h|0,2048,e|0)|0;w=x;x=0;if(w&1){R=25;break b}if(o){o=k[m>>2]|0;if((o|0)==(k[K>>2]|0)){x=0;Fa(14,j|0,m|0,K|0);w=x;x=0;if(w&1){R=25;break b}o=k[m>>2]|0}k[m>>2]=o+4;k[o>>2]=e;c=c+1|0}else{w=i[T>>0]|0;if(!((e|0)==(u|0)&((c|0)!=0?(((w&1)==0?(w&255)>>>1:k[F>>2]|0)|0)!=0:0))){o=d;break}if((n|0)==(k[N>>2]|0)){x=0;Fa(13,_|0,O|0,N|0);w=x;x=0;if(w&1){R=25;break b}n=k[O>>2]|0}w=n+4|0;k[O>>2]=w;k[n>>2]=c;n=w;c=0}e=k[a>>2]|0;o=e+12|0;p=k[o>>2]|0;if((p|0)==(k[e+16>>2]|0)){x=0;ta(k[(k[e>>2]|0)+40>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=25;break b}else{t=d;p=s;continue}}else{k[o>>2]=p+4;t=d;p=s;continue}}if((c|0)!=0?(k[_>>2]|0)!=(n|0):0){if((n|0)==(k[N>>2]|0)){x=0;Fa(13,_|0,O|0,N|0);w=x;x=0;if(w&1){R=26;break b}n=k[O>>2]|0}w=n+4|0;k[O>>2]=w;k[n>>2]=c;n=w}s=k[M>>2]|0;if((s|0)>0){c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=26;break b}}else c=k[d>>2]|0;if((c|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(o){c=k[o+12>>2]|0;if((c|0)==(k[o+16>>2]|0)){x=0;c=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;w=x;x=0;if(w&1){R=26;break b}}else c=k[c>>2]|0;if((c|0)!=-1)if(d)break;else{R=206;break b}else{k[b>>2]=0;R=200;break}}else R=200;while(0);if((R|0)==200){R=0;if(d){R=206;break b}else o=0}c=k[a>>2]|0;d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=26;break b}}else c=k[d>>2]|0;if((c|0)!=(k[L>>2]|0)){R=206;break b}c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){x=0;ta(k[(k[c>>2]|0)+40>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=26;break b}}else k[d>>2]=e+4;if((s|0)>0){p=o;e=o;t=s;while(1){c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=24;break b}}else c=k[d>>2]|0;if((c|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0)){x=0;c=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=24;break b}}else c=k[c>>2]|0;if((c|0)!=-1)if(d^(p|0)==0){c=p;s=p;break}else{R=231;break b}else{k[b>>2]=0;c=0;R=224;break}}else{c=p;R=224}while(0);if((R|0)==224){R=0;if(d){R=231;break b}else s=0}d=k[a>>2]|0;e=k[d+12>>2]|0;if((e|0)==(k[d+16>>2]|0)){x=0;d=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){R=24;break b}}else d=k[e>>2]|0;x=0;d=va(k[(k[h>>2]|0)+12>>2]|0,h|0,2048,d|0)|0;w=x;x=0;if(w&1){R=24;break b}if(!d){R=231;break b}if((k[m>>2]|0)==(k[K>>2]|0)?(x=0,Fa(14,j|0,m|0,K|0),w=x,x=0,w&1):0){R=24;break b}d=k[a>>2]|0;e=k[d+12>>2]|0;if((e|0)==(k[d+16>>2]|0)){x=0;d=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;w=x;x=0;if(w&1){R=24;break b}}else d=k[e>>2]|0;e=k[m>>2]|0;k[m>>2]=e+4;k[e>>2]=d;d=t;t=t+-1|0;k[M>>2]=t;e=k[a>>2]|0;o=e+12|0;p=k[o>>2]|0;if((p|0)==(k[e+16>>2]|0)){x=0;ta(k[(k[e>>2]|0)+40>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=24;break b}}else k[o>>2]=p+4;if((d|0)<=1)break;else{p=c;e=s}}}}if((k[m>>2]|0)==(k[j>>2]|0)){R=242;break b}break}default:n=o}while(0);h:do if((R|0)==44)while(1){R=0;c=k[a>>2]|0;do if(c){d=k[c+12>>2]|0;if((d|0)==(k[c+16>>2]|0)){x=0;c=ta(k[(k[c>>2]|0)+36>>2]|0,c|0)|0;w=x;x=0;if(w&1){R=21;break b}}else c=k[d>>2]|0;if((c|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);do if(e){c=k[e+12>>2]|0;if((c|0)==(k[e+16>>2]|0)){x=0;c=ta(k[(k[e>>2]|0)+36>>2]|0,e|0)|0;w=x;x=0;if(w&1){R=21;break b}}else c=k[c>>2]|0;if((c|0)!=-1)if(d^(n|0)==0){p=n;e=n;break}else{n=o;break h}else{k[b>>2]=0;n=0;R=57;break}}else R=57;while(0);if((R|0)==57){R=0;if(d){n=o;break h}else{p=n;e=0}}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;w=x;x=0;if(w&1){R=21;break b}}else n=k[c>>2]|0;x=0;n=va(k[(k[h>>2]|0)+12>>2]|0,h|0,8192,n|0)|0;w=x;x=0;if(w&1){R=21;break b}if(!n){n=o;break h}n=k[a>>2]|0;c=n+12|0;d=k[c>>2]|0;if((d|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+40>>2]|0,n|0)|0;R=x;x=0;if(R&1){R=21;break b}}else{k[c>>2]=d+4;n=k[d>>2]|0}x=0;ra(92,W|0,n|0);R=x;x=0;if(R&1){R=21;break b}else{n=p;R=44}}while(0);y=y+1|0;if(y>>>0>=4){s=n;R=244;break}else o=n}i:switch(R|0){case 21:{c=Wa()|0;break a}case 22:{c=Wa()|0;break a}case 23:{c=Wa()|0;break a}case 24:{c=Wa()|0;break a}case 25:{c=Wa()|0;break a}case 26:{c=Wa()|0;break a}case 42:{k[f>>2]=k[f>>2]|4;c=0;break}case 107:{k[f>>2]=k[f>>2]|4;c=0;break}case 148:{k[f>>2]=k[f>>2]|4;c=0;break}case 206:{k[f>>2]=k[f>>2]|4;c=0;break}case 231:{k[f>>2]=k[f>>2]|4;c=0;break}case 242:{k[f>>2]=k[f>>2]|4;c=0;break}case 244:{j:do if(q){o=q+4|0;p=q+8|0;e=1;k:while(1){n=i[q>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=k[o>>2]|0;if(e>>>0>=n>>>0)break j;n=k[a>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;m=x;x=0;if(m&1){R=20;break k}}else n=k[c>>2]|0;if((n|0)==-1){k[a>>2]=0;d=1;break}else{d=(k[a>>2]|0)==0;break}}else d=1;while(0);n=k[b>>2]|0;do if(n){c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;m=x;x=0;if(m&1){R=20;break k}}else n=k[c>>2]|0;if((n|0)!=-1)if(d)break;else{R=271;break k}else{k[b>>2]=0;R=263;break}}else R=263;while(0);if((R|0)==263?(R=0,d):0){R=271;break}n=k[a>>2]|0;c=k[n+12>>2]|0;if((c|0)==(k[n+16>>2]|0)){x=0;n=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;m=x;x=0;if(m&1){R=20;break}}else n=k[c>>2]|0;if(!(i[q>>0]&1))c=o;else c=k[p>>2]|0;if((n|0)!=(k[c+(e<<2)>>2]|0)){R=271;break}n=e+1|0;c=k[a>>2]|0;d=c+12|0;e=k[d>>2]|0;if((e|0)==(k[c+16>>2]|0)){x=0;ta(k[(k[c>>2]|0)+40>>2]|0,c|0)|0;m=x;x=0;if(m&1){R=20;break}else{e=n;continue}}else{k[d>>2]=e+4;e=n;continue}}if((R|0)==20){c=Wa()|0;break a}else if((R|0)==271){k[f>>2]=k[f>>2]|4;c=0;break i}}while(0);n=k[_>>2]|0;if((n|0)!=(s|0)?(k[S>>2]=0,cs(T,n,s,S),(k[S>>2]|0)!=0):0){k[f>>2]=k[f>>2]|4;c=0}else c=1;break}}en(W);en(U);en(V);en(X);Sm(T);n=k[_>>2]|0;k[_>>2]=0;if((n|0)!=0?(x=0,qa(k[Z>>2]|0,n|0),_=x,x=0,_&1):0){_=Wa(0)|0;oc(_)}r=Y;return c|0}while(0);en(W);en(U);en(V);en(X);Sm(T);n=k[_>>2]|0;k[_>>2]=0;if((n|0)!=0?(x=0,qa(k[Z>>2]|0,n|0),_=x,x=0,_&1):0){_=Wa(0)|0;oc(_)}fb(c|0);return 0}function hs(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;v=r;r=r+432|0;h=v+424|0;a=v+24|0;y=v+16|0;q=v+8|0;n=v+4|0;o=v+428|0;j=v;k[y>>2]=a;A=y+4|0;k[A>>2]=189;l=a+400|0;x=0;u=ta(68,e|0)|0;m=x;x=0;if(!(m&1)){k[n>>2]=u;x=0;m=Aa(37,n|0,44212)|0;a=x;x=0;a:do if(!(a&1)?(i[o>>0]=0,s=k[c>>2]|0,k[j>>2]=s,p=k[e+4>>2]|0,t=s,x=0,k[h>>2]=k[j>>2],p=ua(2,b|0,h|0,d|0,n|0,p|0,f|0,o|0,m|0,y|0,q|0,l|0)|0,e=x,x=0,!(e&1)):0){if(p){if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;if(i[o>>0]|0){x=0;a=Aa(k[(k[m>>2]|0)+44>>2]|0,m|0,45)|0;e=x;x=0;if(e&1)break;x=0;ra(92,g|0,a|0);e=x;x=0;if(e&1)break}x=0;j=Aa(k[(k[m>>2]|0)+44>>2]|0,m|0,48)|0;e=x;x=0;if(e&1)break;a=k[y>>2]|0;l=k[q>>2]|0;h=l+-4|0;b:do if(a>>>0>>0)do{if((k[a>>2]|0)!=(j|0))break b;a=a+4|0}while(a>>>0>>0);while(0);x=0;va(33,g|0,a|0,l|0)|0;g=x;x=0;if(g&1)break}a=k[b>>2]|0;do if(a){h=k[a+12>>2]|0;if((h|0)==(k[a+16>>2]|0)){x=0;a=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;g=x;x=0;if(g&1)break a}else a=k[h>>2]|0;if((a|0)==-1){k[b>>2]=0;h=1;break}else{h=(k[b>>2]|0)==0;break}}else h=1;while(0);do if(s){a=k[t+12>>2]|0;if((a|0)==(k[t+16>>2]|0)){x=0;a=ta(k[(k[s>>2]|0)+36>>2]|0,t|0)|0;t=x;x=0;if(t&1)break a}else a=k[a>>2]|0;if((a|0)!=-1)if(h)break;else{z=32;break}else{k[c>>2]=0;z=30;break}}else z=30;while(0);if((z|0)==30?h:0)z=32;if((z|0)==32)k[f>>2]=k[f>>2]|2;h=k[b>>2]|0;zm(u)|0;a=k[y>>2]|0;k[y>>2]=0;if((a|0)!=0?(x=0,qa(k[A>>2]|0,a|0),A=x,x=0,A&1):0){A=Wa(0)|0;oc(A)}r=v;return h|0}while(0);h=Wa()|0;zm(u)|0;a=k[y>>2]|0;k[y>>2]=0;if(!a)w=h;else z=38}else{h=Wa()|0;k[y>>2]=0;z=38}if((z|0)==38){x=0;qa(k[A>>2]|0,a|0);A=x;x=0;if(A&1){A=Wa(0)|0;oc(A)}else w=h}fb(w|0);return 0}function is(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0;z=r;r=r+112|0;m=z+100|0;n=z+88|0;o=z+76|0;p=z+64|0;q=z+52|0;s=z+48|0;t=z+36|0;u=z+24|0;v=z+12|0;w=z;do if(a){a=Ss(b,43956)|0;Mb[k[(k[a>>2]|0)+44>>2]&127](m,a);w=k[m>>2]|0;i[c>>0]=w;i[c+1>>0]=w>>8;i[c+2>>0]=w>>16;i[c+3>>0]=w>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](n,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;en(n);Mb[k[(k[a>>2]|0)+28>>2]&127](o,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;x=0;ra(93,h|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[h>>2]=k[o>>2];k[h+4>>2]=k[o+4>>2];k[h+8>>2]=k[o+8>>2];k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;en(o);h=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;k[d>>2]=h;h=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;k[e>>2]=h;Mb[k[(k[a>>2]|0)+20>>2]&127](p,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}x=0;ra(91,f|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)};k[f>>2]=k[p>>2];k[f+4>>2]=k[p+4>>2];k[f+8>>2]=k[p+8>>2];k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;Sm(p);Mb[k[(k[a>>2]|0)+24>>2]&127](q,a);if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;x=0;ra(93,g|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else{k[g>>2]=k[q>>2];k[g+4>>2]=k[q+4>>2];k[g+8>>2]=k[q+8>>2];k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;en(q);y=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}else{a=Ss(b,43892)|0;Mb[k[(k[a>>2]|0)+44>>2]&127](s,a);s=k[s>>2]|0;i[c>>0]=s;i[c+1>>0]=s>>8;i[c+2>>0]=s>>16;i[c+3>>0]=s>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](t,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[j>>2]=k[t>>2];k[j+4>>2]=k[t+4>>2];k[j+8>>2]=k[t+8>>2];k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;en(t);Mb[k[(k[a>>2]|0)+28>>2]&127](u,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;x=0;ra(93,h|0,0);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)};k[h>>2]=k[u>>2];k[h+4>>2]=k[u+4>>2];k[h+8>>2]=k[u+8>>2];k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;en(u);h=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;k[d>>2]=h;h=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;k[e>>2]=h;Mb[k[(k[a>>2]|0)+20>>2]&127](v,a);if(!(i[f>>0]&1)){i[f+1>>0]=0;i[f>>0]=0}else{i[k[f+8>>2]>>0]=0;k[f+4>>2]=0}x=0;ra(91,f|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)};k[f>>2]=k[v>>2];k[f+4>>2]=k[v+4>>2];k[f+8>>2]=k[v+8>>2];k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;Sm(v);Mb[k[(k[a>>2]|0)+24>>2]&127](w,a);if(!(i[g>>0]&1))i[g>>0]=0;else k[k[g+8>>2]>>2]=0;k[g+4>>2]=0;x=0;ra(93,g|0,0);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else{k[g>>2]=k[w>>2];k[g+4>>2]=k[w+4>>2];k[g+8>>2]=k[w+8>>2];k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;en(w);y=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}while(0);k[l>>2]=y;r=z;return}function js(a){a=a|0;return}function ks(a){a=a|0;mj(a);return}function ls(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;D=r;r=r+384|0;u=D+8|0;g=D;j=D+284|0;l=D+72|0;h=D+184|0;F=D+68|0;A=D+80|0;w=D+77|0;B=D+76|0;G=D+56|0;I=D+44|0;H=D+32|0;m=D+28|0;t=D+84|0;z=D+24|0;y=D+20|0;v=D+16|0;k[l>>2]=j;p[u>>3]=f;j=il(j,100,59018,u)|0;do if(j>>>0>99){x=0;a=Da(3)|0;C=x;x=0;if(!(C&1)?(x=0,p[g>>3]=f,q=Ea(17,l|0,a|0,59018,g|0)|0,C=x,x=0,!(C&1)):0){a=k[l>>2]|0;if(!a){x=0;Ga(6);C=x;x=0;if(C&1){a=0;g=0;C=7;break}a=k[l>>2]|0}h=Pl(q)|0;g=h;if(!h){x=0;Ga(6);C=x;x=0;if(C&1)C=7;else{s=0;C=10}}else{s=h;C=10}}else{a=0;g=0;C=7}}else{g=0;a=0;s=h;q=j;C=10}while(0);if((C|0)==10){x=0;h=ta(68,d|0)|0;o=x;x=0;if(o&1)C=7;else{k[F>>2]=h;x=0;o=Aa(37,F|0,44220)|0;n=x;x=0;if(!(n&1)?(n=k[l>>2]|0,x=0,Ea(k[(k[o>>2]|0)+32>>2]|0,o|0,n|0,n+q|0,s|0)|0,n=x,x=0,!(n&1)):0){if(!q)n=0;else n=(i[k[l>>2]>>0]|0)==45;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;x=0;za(3,c|0,n|0,F|0,A|0,w|0,B|0,G|0,I|0,H|0,m|0);c=x;x=0;if(!(c&1)){m=k[m>>2]|0;if((q|0)>(m|0)){c=i[H>>0]|0;j=i[I>>0]|0;j=(q-m<<1|1)+m+((c&1)==0?(c&255)>>>1:k[H+4>>2]|0)+((j&1)==0?(j&255)>>>1:k[I+4>>2]|0)|0}else{c=i[H>>0]|0;j=i[I>>0]|0;j=m+2+((c&1)==0?(c&255)>>>1:k[H+4>>2]|0)+((j&1)==0?(j&255)>>>1:k[I+4>>2]|0)|0}if(j>>>0>100){j=Pl(j)|0;l=j;if(!j){x=0;Ga(6);t=x;x=0;if(!(t&1)){j=0;C=26}}else C=26}else{l=0;j=t;C=26}if((C|0)==26){x=0;wa(1,j|0,z|0,y|0,k[d+4>>2]|0,s|0,s+q|0,o|0,n|0,A|0,i[w>>0]|0,i[B>>0]|0,G|0,I|0,H|0,m|0);B=x;x=0;if(!(B&1)?(k[v>>2]=k[b>>2],b=k[z>>2]|0,E=k[y>>2]|0,x=0,k[u>>2]=k[v>>2],E=sa(39,u|0,j|0,b|0,E|0,d|0,e|0)|0,b=x,x=0,!(b&1)):0){if(l){Ql(l);h=k[F>>2]|0}Sm(H);Sm(I);Sm(G);zm(h)|0;if(g)Ql(g);if(a)Ql(a);r=D;return E|0}}j=Wa()|0;if(l){Ql(l);h=k[F>>2]|0}}else j=Wa()|0;Sm(H);Sm(I);Sm(G)}else j=Wa()|0;zm(h)|0}}if((C|0)==7)j=Wa()|0;if(g)Ql(g);if(a)Ql(a);fb(j|0);return 0}function ms(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;D=r;r=r+112|0;o=D+108|0;p=D+96|0;t=D+92|0;u=D+80|0;v=D+68|0;w=D+56|0;y=D+52|0;z=D+40|0;A=D+36|0;B=D+24|0;q=D+12|0;s=D;do if(a){a=Ss(c,43828)|0;c=k[a>>2]|0;do if(b){Mb[k[c+44>>2]&127](o,a);b=k[o>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](p,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[p>>2];k[j+4>>2]=k[p+4>>2];k[j+8>>2]=k[p+8>>2];k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;Sm(p);n=a;break}}else{Mb[k[c+40>>2]&127](t,a);b=k[t>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+28>>2]&127](u,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[u>>2];k[j+4>>2]=k[u+4>>2];k[j+8>>2]=k[u+8>>2];k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;Sm(u);n=a;break}}while(0);j=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;i[e>>0]=j;j=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;i[f>>0]=j;Mb[k[(k[n>>2]|0)+20>>2]&127](v,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)};k[g>>2]=k[v>>2];k[g+4>>2]=k[v+4>>2];k[g+8>>2]=k[v+8>>2];k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;Sm(v);Mb[k[(k[n>>2]|0)+24>>2]&127](w,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}x=0;ra(91,h|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)}else{k[h>>2]=k[w>>2];k[h+4>>2]=k[w+4>>2];k[h+8>>2]=k[w+8>>2];k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;Sm(w);C=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}else{a=Ss(c,43764)|0;c=k[a>>2]|0;do if(b){Mb[k[c+44>>2]&127](y,a);b=k[y>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](z,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[z>>2];k[j+4>>2]=k[z+4>>2];k[j+8>>2]=k[z+8>>2];k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;Sm(z);m=a;break}}else{Mb[k[c+40>>2]&127](A,a);b=k[A>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+28>>2]&127](B,a);if(!(i[j>>0]&1)){i[j+1>>0]=0;i[j>>0]=0}else{i[k[j+8>>2]>>0]=0;k[j+4>>2]=0}x=0;ra(91,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[B>>2];k[j+4>>2]=k[B+4>>2];k[j+8>>2]=k[B+8>>2];k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;Sm(B);m=a;break}}while(0);j=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;i[e>>0]=j;j=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;i[f>>0]=j;Mb[k[(k[m>>2]|0)+20>>2]&127](q,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)};k[g>>2]=k[q>>2];k[g+4>>2]=k[q+4>>2];k[g+8>>2]=k[q+8>>2];k[q>>2]=0;k[q+4>>2]=0;k[q+8>>2]=0;Sm(q);Mb[k[(k[m>>2]|0)+24>>2]&127](s,a);if(!(i[h>>0]&1)){i[h+1>>0]=0;i[h>>0]=0}else{i[k[h+8>>2]>>0]=0;k[h+4>>2]=0}x=0;ra(91,h|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)}else{k[h>>2]=k[s>>2];k[h+4>>2]=k[s+4>>2];k[h+8>>2]=k[s+8>>2];k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;Sm(s);C=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}while(0);k[l>>2]=C;r=D;return}function ns(a,b,c,d,e,f,g,h,l,m,n,o,p,q,r){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;k[c>>2]=a;N=q+4|0;O=q+8|0;P=q+1|0;H=p+4|0;I=(d&512|0)==0;J=p+8|0;K=p+1|0;L=g+8|0;M=(r|0)>0;A=o+4|0;B=o+8|0;C=o+1|0;D=r+1|0;F=-2-r-((r|0)<0?~r:-1)|0;G=(r|0)>0;z=0;do{switch(i[l+z>>0]|0){case 0:{k[b>>2]=k[c>>2];break}case 1:{k[b>>2]=k[c>>2];x=Vb[k[(k[g>>2]|0)+28>>2]&63](g,32)|0;y=k[c>>2]|0;k[c>>2]=y+1;i[y>>0]=x;break}case 3:{y=i[q>>0]|0;s=(y&1)==0;if((s?(y&255)>>>1:k[N>>2]|0)|0){x=i[(s?P:k[O>>2]|0)>>0]|0;y=k[c>>2]|0;k[c>>2]=y+1;i[y>>0]=x}break}case 2:{u=i[p>>0]|0;s=(u&1)==0;u=s?(u&255)>>>1:k[H>>2]|0;if(!(I|(u|0)==0)){t=s?K:k[J>>2]|0;v=t+u|0;s=k[c>>2]|0;if(u)do{i[s>>0]=i[t>>0]|0;t=t+1|0;s=s+1|0}while((t|0)!=(v|0));k[c>>2]=s}break}case 4:{s=k[c>>2]|0;e=h?e+1|0:e;w=e;v=k[L>>2]|0;a:do if(e>>>0>>0){t=e;do{u=i[t>>0]|0;if(u<<24>>24<=-1)break a;if(!(j[v+(u<<24>>24<<1)>>1]&2048))break a;t=t+1|0}while(t>>>0>>0)}else t=e;while(0);u=t;if(M){x=-2-u-~(u>>>0>w>>>0?w:u)|0;x=F>>>0>x>>>0?F:x;if(t>>>0>e>>>0&G){u=t;w=r;while(1){u=u+-1|0;y=i[u>>0]|0;v=k[c>>2]|0;k[c>>2]=v+1;i[v>>0]=y;v=(w|0)>1;if(!(u>>>0>e>>>0&v))break;else w=w+-1|0}}else v=G;y=D+x|0;u=t+(x+1)|0;if(v)w=Vb[k[(k[g>>2]|0)+28>>2]&63](g,48)|0;else w=0;t=k[c>>2]|0;k[c>>2]=t+1;if((y|0)>0){v=y;while(1){i[t>>0]=w;t=k[c>>2]|0;k[c>>2]=t+1;if((v|0)>1)v=v+-1|0;else break}}i[t>>0]=m}else u=t;if((u|0)!=(e|0)){y=i[o>>0]|0;t=(y&1)==0;if(!((t?(y&255)>>>1:k[A>>2]|0)|0))t=-1;else t=i[(t?C:k[B>>2]|0)>>0]|0;if((u|0)!=(e|0)){v=0;w=0;while(1){if((w|0)==(t|0)){y=k[c>>2]|0;k[c>>2]=y+1;i[y>>0]=n;v=v+1|0;y=i[o>>0]|0;t=(y&1)==0;if(v>>>0<(t?(y&255)>>>1:k[A>>2]|0)>>>0){t=i[(t?C:k[B>>2]|0)+v>>0]|0;t=t<<24>>24==127?-1:t<<24>>24;w=0}else{t=w;w=0}}u=u+-1|0;x=i[u>>0]|0;y=k[c>>2]|0;k[c>>2]=y+1;i[y>>0]=x;if((u|0)==(e|0))break;else w=w+1|0}}}else{x=Vb[k[(k[g>>2]|0)+28>>2]&63](g,48)|0;y=k[c>>2]|0;k[c>>2]=y+1;i[y>>0]=x}t=k[c>>2]|0;if((s|0)!=(t|0)?(E=t+-1|0,s>>>0>>0):0){t=E;do{y=i[s>>0]|0;i[s>>0]=i[t>>0]|0;i[t>>0]=y;s=s+1|0;t=t+-1|0}while(s>>>0>>0)}break}default:{}}z=z+1|0}while((z|0)!=4);t=i[q>>0]|0;e=(t&1)==0;t=e?(t&255)>>>1:k[N>>2]|0;if(t>>>0>1){s=e?P:k[O>>2]|0;u=s+t|0;e=k[c>>2]|0;if((t|0)!=1){s=s+1|0;do{i[e>>0]=i[s>>0]|0;e=e+1|0;s=s+1|0}while((s|0)!=(u|0))}k[c>>2]=e}switch(d&176|0){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function os(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;z=r;r=r+176|0;p=z+56|0;B=z+52|0;w=z+64|0;t=z+61|0;y=z+60|0;C=z+40|0;E=z+28|0;D=z+16|0;l=z+12|0;o=z+68|0;v=z+8|0;u=z+4|0;q=z;a=tn(d)|0;k[B>>2]=a;x=0;s=Aa(37,B|0,44220)|0;n=x;x=0;do if(n&1)F=13;else{m=i[f>>0]|0;g=(m&1)==0;n=f+4|0;if(!((g?(m&255)>>>1:k[n>>2]|0)|0))m=0;else{g=i[(g?f+1|0:k[f+8>>2]|0)>>0]|0;x=0;h=Aa(k[(k[s>>2]|0)+28>>2]|0,s|0,45)|0;m=x;x=0;if(m&1){F=13;break}m=g<<24>>24==h<<24>>24}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;x=0;za(3,c|0,m|0,B|0,w|0,t|0,y|0,C|0,E|0,D|0,l|0);j=x;x=0;if(!(j&1)){j=i[f>>0]|0;c=k[n>>2]|0;g=(j&1)==0?(j&255)>>>1:c;l=k[l>>2]|0;if((g|0)>(l|0)){G=i[D>>0]|0;h=i[E>>0]|0;g=(g-l<<1|1)+l+((G&1)==0?(G&255)>>>1:k[D+4>>2]|0)+((h&1)==0?(h&255)>>>1:k[E+4>>2]|0)|0}else{G=i[D>>0]|0;g=i[E>>0]|0;g=l+2+((G&1)==0?(G&255)>>>1:k[D+4>>2]|0)+((g&1)==0?(g&255)>>>1:k[E+4>>2]|0)|0}if(g>>>0>100){g=Pl(g)|0;h=g;if(!g){x=0;Ga(6);G=x;x=0;if(!(G&1)){j=i[f>>0]|0;c=k[n>>2]|0;g=0;F=17}}else F=17}else{h=0;g=o;F=17}if((F|0)==17){G=(j&1)==0;f=G?f+1|0:k[f+8>>2]|0;x=0;wa(1,g|0,v|0,u|0,k[d+4>>2]|0,f|0,f+(G?(j&255)>>>1:c)|0,s|0,m|0,w|0,i[t>>0]|0,i[y>>0]|0,C|0,E|0,D|0,l|0);G=x;x=0;if(!(G&1)?(k[q>>2]=k[b>>2],G=k[v>>2]|0,A=k[u>>2]|0,x=0,k[p>>2]=k[q>>2],A=sa(39,p|0,g|0,G|0,A|0,d|0,e|0)|0,G=x,x=0,!(G&1)):0){if(h){Ql(h);a=k[B>>2]|0}Sm(D);Sm(E);Sm(C);zm(a)|0;r=z;return A|0}}g=Wa()|0;if(h){Ql(h);a=k[B>>2]|0}}else g=Wa()|0;Sm(D);Sm(E);Sm(C)}while(0);if((F|0)==13)g=Wa()|0;zm(a)|0;fb(g|0);return 0}function ps(a){a=a|0;return}function qs(a){a=a|0;mj(a);return}function rs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;D=r;r=r+992|0;u=D+8|0;g=D;j=D+888|0;l=D+880|0;h=D+480|0;F=D+76|0;A=D+884|0;w=D+72|0;B=D+68|0;G=D+56|0;I=D+44|0;H=D+32|0;m=D+28|0;t=D+80|0;z=D+24|0;y=D+20|0;v=D+16|0;k[l>>2]=j;p[u>>3]=f;j=il(j,100,59018,u)|0;do if(j>>>0>99){x=0;a=Da(3)|0;C=x;x=0;if(!(C&1)?(x=0,p[g>>3]=f,q=Ea(17,l|0,a|0,59018,g|0)|0,C=x,x=0,!(C&1)):0){a=k[l>>2]|0;if(!a){x=0;Ga(6);C=x;x=0;if(C&1){a=0;g=0;C=7;break}a=k[l>>2]|0}h=Pl(q<<2)|0;g=h;if(!h){x=0;Ga(6);C=x;x=0;if(C&1)C=7;else{s=0;C=10}}else{s=h;C=10}}else{a=0;g=0;C=7}}else{g=0;a=0;s=h;q=j;C=10}while(0);if((C|0)==10){x=0;h=ta(68,d|0)|0;o=x;x=0;if(o&1)C=7;else{k[F>>2]=h;x=0;o=Aa(37,F|0,44212)|0;n=x;x=0;if(!(n&1)?(n=k[l>>2]|0,x=0,Ea(k[(k[o>>2]|0)+48>>2]|0,o|0,n|0,n+q|0,s|0)|0,n=x,x=0,!(n&1)):0){if(!q)n=0;else n=(i[k[l>>2]>>0]|0)==45;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;x=0;za(4,c|0,n|0,F|0,A|0,w|0,B|0,G|0,I|0,H|0,m|0);c=x;x=0;if(!(c&1)){m=k[m>>2]|0;if((q|0)>(m|0)){c=i[H>>0]|0;j=i[I>>0]|0;j=(q-m<<1|1)+m+((c&1)==0?(c&255)>>>1:k[H+4>>2]|0)+((j&1)==0?(j&255)>>>1:k[I+4>>2]|0)|0}else{c=i[H>>0]|0;j=i[I>>0]|0;j=m+2+((c&1)==0?(c&255)>>>1:k[H+4>>2]|0)+((j&1)==0?(j&255)>>>1:k[I+4>>2]|0)|0}if(j>>>0>100){j=Pl(j<<2)|0;l=j;if(!j){x=0;Ga(6);t=x;x=0;if(!(t&1)){j=0;C=26}}else C=26}else{l=0;j=t;C=26}if((C|0)==26){x=0;wa(2,j|0,z|0,y|0,k[d+4>>2]|0,s|0,s+(q<<2)|0,o|0,n|0,A|0,k[w>>2]|0,k[B>>2]|0,G|0,I|0,H|0,m|0);B=x;x=0;if(!(B&1)?(k[v>>2]=k[b>>2],b=k[z>>2]|0,E=k[y>>2]|0,x=0,k[u>>2]=k[v>>2],E=sa(40,u|0,j|0,b|0,E|0,d|0,e|0)|0,b=x,x=0,!(b&1)):0){if(l){Ql(l);h=k[F>>2]|0}en(H);en(I);Sm(G);zm(h)|0;if(g)Ql(g);if(a)Ql(a);r=D;return E|0}}j=Wa()|0;if(l){Ql(l);h=k[F>>2]|0}}else j=Wa()|0;en(H);en(I);Sm(G)}else j=Wa()|0;zm(h)|0}}if((C|0)==7)j=Wa()|0;if(g)Ql(g);if(a)Ql(a);fb(j|0);return 0}function ss(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0;B=r;r=r+112|0;m=B+108|0;n=B+96|0;q=B+92|0;s=B+80|0;t=B+68|0;u=B+56|0;v=B+52|0;w=B+40|0;y=B+36|0;z=B+24|0;o=B+12|0;p=B;do if(a){a=Ss(c,43956)|0;c=k[a>>2]|0;do if(b){Mb[k[c+44>>2]&127](m,a);b=k[m>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](n,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[n>>2];k[j+4>>2]=k[n+4>>2];k[j+8>>2]=k[n+8>>2];k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;en(n);break}}else{Mb[k[c+40>>2]&127](q,a);b=k[q>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+28>>2]&127](s,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[s>>2];k[j+4>>2]=k[s+4>>2];k[j+8>>2]=k[s+8>>2];k[s>>2]=0;k[s+4>>2]=0;k[s+8>>2]=0;en(s);break}}while(0);j=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;k[e>>2]=j;j=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;k[f>>2]=j;Mb[k[(k[a>>2]|0)+20>>2]&127](t,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)};k[g>>2]=k[t>>2];k[g+4>>2]=k[t+4>>2];k[g+8>>2]=k[t+8>>2];k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=0;Sm(t);Mb[k[(k[a>>2]|0)+24>>2]&127](u,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;x=0;ra(93,h|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)}else{k[h>>2]=k[u>>2];k[h+4>>2]=k[u+4>>2];k[h+8>>2]=k[u+8>>2];k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;en(u);A=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}else{a=Ss(c,43892)|0;c=k[a>>2]|0;do if(b){Mb[k[c+44>>2]&127](v,a);b=k[v>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+32>>2]&127](w,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[w>>2];k[j+4>>2]=k[w+4>>2];k[j+8>>2]=k[w+8>>2];k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;en(w);break}}else{Mb[k[c+40>>2]&127](y,a);b=k[y>>2]|0;i[d>>0]=b;i[d+1>>0]=b>>8;i[d+2>>0]=b>>16;i[d+3>>0]=b>>24;Mb[k[(k[a>>2]|0)+28>>2]&127](z,a);if(!(i[j>>0]&1))i[j>>0]=0;else k[k[j+8>>2]>>2]=0;k[j+4>>2]=0;x=0;ra(93,j|0,0);d=x;x=0;if(d&1){j=Wa(0)|0;oc(j)}else{k[j>>2]=k[z>>2];k[j+4>>2]=k[z+4>>2];k[j+8>>2]=k[z+8>>2];k[z>>2]=0;k[z+4>>2]=0;k[z+8>>2]=0;en(z);break}}while(0);j=Ob[k[(k[a>>2]|0)+12>>2]&127](a)|0;k[e>>2]=j;j=Ob[k[(k[a>>2]|0)+16>>2]&127](a)|0;k[f>>2]=j;Mb[k[(k[a>>2]|0)+20>>2]&127](o,a);if(!(i[g>>0]&1)){i[g+1>>0]=0;i[g>>0]=0}else{i[k[g+8>>2]>>0]=0;k[g+4>>2]=0}x=0;ra(91,g|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)};k[g>>2]=k[o>>2];k[g+4>>2]=k[o+4>>2];k[g+8>>2]=k[o+8>>2];k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;Sm(o);Mb[k[(k[a>>2]|0)+24>>2]&127](p,a);if(!(i[h>>0]&1))i[h>>0]=0;else k[k[h+8>>2]>>2]=0;k[h+4>>2]=0;x=0;ra(93,h|0,0);f=x;x=0;if(f&1){f=Wa(0)|0;oc(f)}else{k[h>>2]=k[p>>2];k[h+4>>2]=k[p+4>>2];k[h+8>>2]=k[p+8>>2];k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;en(p);A=Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0;break}}while(0);k[l>>2]=A;r=B;return}function ts(a,b,c,d,e,f,g,h,j,l,m,n,o,p,q){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;k[c>>2]=a;J=p+4|0;K=p+8|0;C=o+4|0;D=(d&512|0)==0;E=o+8|0;F=(q|0)>0;G=n+4|0;H=n+8|0;I=n+1|0;A=(q|0)>0;z=0;do{switch(i[j+z>>0]|0){case 0:{k[b>>2]=k[c>>2];break}case 1:{k[b>>2]=k[c>>2];x=Vb[k[(k[g>>2]|0)+44>>2]&63](g,32)|0;y=k[c>>2]|0;k[c>>2]=y+4;k[y>>2]=x;break}case 3:{y=i[p>>0]|0;r=(y&1)==0;if((r?(y&255)>>>1:k[J>>2]|0)|0){x=k[(r?J:k[K>>2]|0)>>2]|0;y=k[c>>2]|0;k[c>>2]=y+4;k[y>>2]=x}break}case 2:{v=i[o>>0]|0;r=(v&1)==0;v=r?(v&255)>>>1:k[C>>2]|0;if(!(D|(v|0)==0)){r=r?C:k[E>>2]|0;t=r+(v<<2)|0;u=k[c>>2]|0;if(v){s=u;while(1){k[s>>2]=k[r>>2];r=r+4|0;if((r|0)==(t|0))break;else s=s+4|0}}k[c>>2]=u+(v<<2)}break}case 4:{r=k[c>>2]|0;e=h?e+4|0:e;a:do if(e>>>0>>0){s=e;do{if(!(Qb[k[(k[g>>2]|0)+12>>2]&63](g,2048,k[s>>2]|0)|0))break a;s=s+4|0}while(s>>>0>>0)}else s=e;while(0);if(F){if(s>>>0>e>>>0&A){v=k[c>>2]|0;u=q;while(1){s=s+-4|0;t=v+4|0;k[v>>2]=k[s>>2];w=u+-1|0;u=(u|0)>1;if(s>>>0>e>>>0&u){v=t;u=w}else{v=w;break}}k[c>>2]=t;t=v}else{u=A;t=q}if(u)w=Vb[k[(k[g>>2]|0)+44>>2]&63](g,48)|0;else w=0;x=k[c>>2]|0;u=t+((t|0)<0?~t:-1)|0;if((t|0)>0){v=x;while(1){k[v>>2]=w;if((t|0)>1){v=v+4|0;t=t+-1|0}else break}}k[c>>2]=x+(u+2<<2);k[x+(u+1<<2)>>2]=l}if((s|0)==(e|0)){x=Vb[k[(k[g>>2]|0)+44>>2]&63](g,48)|0;y=k[c>>2]|0;s=y+4|0;k[c>>2]=s;k[y>>2]=x}else{x=i[n>>0]|0;t=(x&1)==0;y=k[G>>2]|0;if(!((t?(x&255)>>>1:y)|0))t=-1;else t=i[(t?I:k[H>>2]|0)>>0]|0;if((s|0)!=(e|0)){w=0;x=0;while(1){u=k[c>>2]|0;if((x|0)==(t|0)){v=u+4|0;k[c>>2]=v;k[u>>2]=m;w=w+1|0;u=i[n>>0]|0;t=(u&1)==0;if(w>>>0<(t?(u&255)>>>1:y)>>>0){t=i[(t?I:k[H>>2]|0)+w>>0]|0;u=v;t=t<<24>>24==127?-1:t<<24>>24;v=0}else{u=v;t=x;v=0}}else v=x;s=s+-4|0;x=k[s>>2]|0;k[c>>2]=u+4;k[u>>2]=x;if((s|0)==(e|0))break;else x=v+1|0}}s=k[c>>2]|0}if((r|0)!=(s|0)?(B=s+-4|0,r>>>0>>0):0){s=B;do{y=k[r>>2]|0;k[r>>2]=k[s>>2];k[s>>2]=y;r=r+4|0;s=s+-4|0}while(r>>>0>>0)}break}default:{}}z=z+1|0}while((z|0)!=4);r=i[p>>0]|0;e=(r&1)==0;r=e?(r&255)>>>1:k[J>>2]|0;if(r>>>0>1){s=e?J:k[K>>2]|0;e=s+4|0;s=s+(r<<2)|0;t=k[c>>2]|0;u=s-e|0;if((r|0)!=1){r=t;while(1){k[r>>2]=k[e>>2];e=e+4|0;if((e|0)==(s|0))break;else r=r+4|0}}k[c>>2]=t+(u>>>2<<2)}switch(d&176|0){case 32:{k[b>>2]=k[c>>2];break}case 16:break;default:k[b>>2]=a}return}function us(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;z=r;r=r+480|0;o=z+468|0;B=z+464|0;w=z+472|0;t=z+56|0;y=z+52|0;C=z+40|0;E=z+28|0;D=z+16|0;l=z+12|0;n=z+64|0;v=z+8|0;u=z+4|0;p=z;a=tn(d)|0;k[B>>2]=a;x=0;q=Aa(37,B|0,44212)|0;s=x;x=0;do if(s&1)F=13;else{m=i[f>>0]|0;g=(m&1)==0;s=f+4|0;if(!((g?(m&255)>>>1:k[s>>2]|0)|0))m=0;else{g=k[(g?s:k[f+8>>2]|0)>>2]|0;x=0;h=Aa(k[(k[q>>2]|0)+44>>2]|0,q|0,45)|0;m=x;x=0;if(m&1){F=13;break}m=(g|0)==(h|0)}k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;x=0;za(4,c|0,m|0,B|0,w|0,t|0,y|0,C|0,E|0,D|0,l|0);j=x;x=0;if(!(j&1)){j=i[f>>0]|0;c=k[s>>2]|0;g=(j&1)==0?(j&255)>>>1:c;l=k[l>>2]|0;if((g|0)>(l|0)){G=i[D>>0]|0;h=i[E>>0]|0;g=(g-l<<1|1)+l+((G&1)==0?(G&255)>>>1:k[D+4>>2]|0)+((h&1)==0?(h&255)>>>1:k[E+4>>2]|0)|0}else{G=i[D>>0]|0;g=i[E>>0]|0;g=l+2+((G&1)==0?(G&255)>>>1:k[D+4>>2]|0)+((g&1)==0?(g&255)>>>1:k[E+4>>2]|0)|0}if(g>>>0>100){g=Pl(g<<2)|0;h=g;if(!g){x=0;Ga(6);G=x;x=0;if(!(G&1)){j=i[f>>0]|0;c=k[s>>2]|0;g=0;F=17}}else F=17}else{h=0;g=n;F=17}if((F|0)==17){G=(j&1)==0;f=G?s:k[f+8>>2]|0;x=0;wa(2,g|0,v|0,u|0,k[d+4>>2]|0,f|0,f+((G?(j&255)>>>1:c)<<2)|0,q|0,m|0,w|0,k[t>>2]|0,k[y>>2]|0,C|0,E|0,D|0,l|0);G=x;x=0;if(!(G&1)?(k[p>>2]=k[b>>2],G=k[v>>2]|0,A=k[u>>2]|0,x=0,k[o>>2]=k[p>>2],A=sa(40,o|0,g|0,G|0,A|0,d|0,e|0)|0,G=x,x=0,!(G&1)):0){if(h){Ql(h);a=k[B>>2]|0}en(D);en(E);Sm(C);zm(a)|0;r=z;return A|0}}g=Wa()|0;if(h){Ql(h);a=k[B>>2]|0}}else g=Wa()|0;en(D);en(E);Sm(C)}while(0);if((F|0)==13)g=Wa()|0;zm(a)|0;fb(g|0);return 0}function vs(a){a=a|0;return}function ws(a){a=a|0;mj(a);return}function xs(a,b,c){a=a|0;b=b|0;c=c|0;a=vk((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0,1)|0;return a>>>((a|0)!=(-1|0)&1)|0}function ys(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0;h=r;r=r+16|0;j=h;k[j>>2]=0;k[j+4>>2]=0;k[j+8>>2]=0;g=i[f>>0]|0;l=(g&1)==0;b=l?f+1|0:k[f+8>>2]|0;g=l?(g&255)>>>1:k[f+4>>2]|0;f=b+g|0;a:do if((g|0)>0){while(1){x=0;ra(67,j|0,i[b>>0]|0);l=x;x=0;if(l&1)break;b=b+1|0;if(b>>>0>=f>>>0){g=4;break a}}b=Wa()|0;g=7}else g=4;while(0);b:do if((g|0)==4){x=0;b=Ea(19,((c|0)==-1?-1:c<<1)|0,d|0,e|0,((i[j>>0]&1)==0?j+1|0:k[j+8>>2]|0)|0)|0;l=x;x=0;if(l&1){b=Wa()|0;g=7;break}k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;l=xl(b)|0;f=b+l|0;c:do if((l|0)>0){while(1){x=0;ra(67,a|0,i[b>>0]|0);l=x;x=0;if(l&1)break;b=b+1|0;if(b>>>0>=f>>>0)break c}b=Wa()|0;Sm(a);break b}while(0);Sm(j);r=h;return}while(0);Sm(j);fb(b|0)}function zs(a,b){a=a|0;b=b|0;return}function As(a){a=a|0;return}function Bs(a){a=a|0;mj(a);return}function Cs(a,b,c){a=a|0;b=b|0;c=c|0;a=vk((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0,1)|0;return a>>>((a|0)!=(-1|0)&1)|0}function Ds(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;v=r;r=r+224|0;n=v+184|0;m=v+192|0;l=v+180|0;o=v+176|0;t=v+168|0;s=v+40|0;q=v+32|0;u=v+28|0;w=v+16|0;j=v+8|0;p=v;k[w>>2]=0;k[w+4>>2]=0;k[w+8>>2]=0;k[j+4>>2]=0;k[j>>2]=44696;h=i[f>>0]|0;y=(h&1)==0;g=f+4|0;b=y?g:k[f+8>>2]|0;f=y?(h&255)>>>1:k[g>>2]|0;g=b+(f<<2)|0;h=m+32|0;a:do if((f|0)>0){b:while(1){k[o>>2]=b;x=0;f=Ha(k[(k[j>>2]|0)+12>>2]|0,j|0,n|0,b|0,g|0,o|0,m|0,h|0,l|0)|0;y=x;x=0;if(y&1){f=12;break}if((f|0)==2?1:(k[o>>2]|0)==(b|0)){f=5;break}if(m>>>0<(k[l>>2]|0)>>>0){b=m;do{x=0;ra(67,w|0,i[b>>0]|0);y=x;x=0;if(y&1){f=11;break b}b=b+1|0}while(b>>>0<(k[l>>2]|0)>>>0)}b=k[o>>2]|0;if(!((f|0)!=2&b>>>0>>0)){f=9;break a}}if((f|0)==5){x=0;qa(190,58955);x=0;b=Wa()|0}else if((f|0)==11)b=Wa()|0;else if((f|0)==12)b=Wa()|0}else f=9;while(0);c:do if((f|0)==9){x=0;b=Ea(19,((c|0)==-1?-1:c<<1)|0,d|0,e|0,((i[w>>0]&1)==0?w+1|0:k[w+8>>2]|0)|0)|0;y=x;x=0;if(y&1){b=Wa()|0;break}k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[p+4>>2]=0;k[p>>2]=44744;y=xl(b)|0;g=b+y|0;h=g;j=s+128|0;d:do if((y|0)>0){e:while(1){k[u>>2]=b;x=0;f=Ha(k[(k[p>>2]|0)+16>>2]|0,p|0,t|0,b|0,((h-b|0)>32?b+32|0:g)|0,u|0,s|0,j|0,q|0)|0;y=x;x=0;if(y&1){f=24;break}if((f|0)==2?1:(k[u>>2]|0)==(b|0)){f=18;break}if(s>>>0<(k[q>>2]|0)>>>0){b=s;do{x=0;ra(92,a|0,k[b>>2]|0);y=x;x=0;if(y&1){f=23;break e}b=b+4|0}while(b>>>0<(k[q>>2]|0)>>>0)}b=k[u>>2]|0;if(!((f|0)!=2&b>>>0>>0))break d}if((f|0)==18){x=0;qa(190,58955);x=0;b=Wa()|0}else if((f|0)==23)b=Wa()|0;else if((f|0)==24)b=Wa()|0;en(a);break c}while(0);Sm(w);r=v;return}while(0);Sm(w);fb(b|0)}function Es(a,b){a=a|0;b=b|0;return}function Fs(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;k[a+4>>2]=b+-1;k[a>>2]=44196;f=a+8|0;x=0;ra(94,f|0,28);e=x;x=0;if(e&1)b=Wa()|0;else{e=a+144|0;x=0;Fa(5,e|0,58885,1);d=x;x=0;if(d&1)b=Wa()|0;else{c=k[f>>2]|0;d=a+12|0;b=k[d>>2]|0;if((b|0)!=(c|0)){do b=b+-4|0;while((b|0)!=(c|0));k[d>>2]=b}k[495]=0;k[494]=43124;x=0;ra(95,a|0,1976);d=x;x=0;do if(((((((((((((!(d&1)?(k[497]=0,k[496]=43164,x=0,ra(96,a|0,1984),d=x,x=0,!(d&1)):0)?(k[499]=0,k[498]=44236,k[500]=0,i[2004]=0,d=Ys()|0,k[500]=d,x=0,ra(97,a|0,1992),d=x,x=0,!(d&1)):0)?(k[503]=0,k[502]=44484,x=0,ra(98,a|0,2008),d=x,x=0,!(d&1)):0)?(k[505]=0,k[504]=44552,x=0,ra(99,a|0,2016),d=x,x=0,!(d&1)):0)?(x=0,ra(100,2024,1),d=x,x=0,!(d&1)):0)?(x=0,ra(101,a|0,2024),d=x,x=0,!(d&1)):0)?(k[511]=0,k[510]=44600,x=0,ra(102,a|0,2040),d=x,x=0,!(d&1)):0)?(k[513]=0,k[512]=44648,x=0,ra(103,a|0,2048),d=x,x=0,!(d&1)):0)?(bu(2056,1),x=0,ra(104,a|0,2056),d=x,x=0,!(d&1)):0)?(cu(2080,1),x=0,ra(105,a|0,2080),d=x,x=0,!(d&1)):0)?(k[529]=0,k[528]=43204,x=0,ra(106,a|0,2112),d=x,x=0,!(d&1)):0)?(k[531]=0,k[530]=43276,x=0,ra(107,a|0,2120),d=x,x=0,!(d&1)):0)?(k[533]=0,k[532]=43348,x=0,ra(108,a|0,2128),d=x,x=0,!(d&1)):0){k[535]=0;k[534]=43408;x=0;ra(109,a|0,2136);d=x;x=0;if(d&1){g=42;break}k[537]=0;k[536]=43716;x=0;ra(110,a|0,2144);d=x;x=0;if(d&1){g=42;break}k[539]=0;k[538]=43780;x=0;ra(111,a|0,2152);d=x;x=0;if(d&1){g=42;break}k[541]=0;k[540]=43844;x=0;ra(112,a|0,2160);d=x;x=0;if(d&1){g=42;break}k[543]=0;k[542]=43908;x=0;ra(113,a|0,2168);d=x;x=0;if(d&1){g=42;break}k[545]=0;k[544]=43972;x=0;ra(114,a|0,2176);d=x;x=0;if(d&1){g=42;break}k[547]=0;k[546]=44008;x=0;ra(115,a|0,2184);d=x;x=0;if(d&1){g=42;break}k[549]=0;k[548]=44044;x=0;ra(116,a|0,2192);d=x;x=0;if(d&1){g=42;break}k[551]=0;k[550]=44080;x=0;ra(117,a|0,2200);d=x;x=0;if(d&1){g=42;break}k[553]=0;k[552]=43468;k[554]=43516;x=0;ra(118,a|0,2208);d=x;x=0;if(d&1){g=42;break}k[557]=0;k[556]=43560;k[558]=43608;x=0;ra(119,a|0,2224);d=x;x=0;if(d&1){g=42;break}k[561]=0;k[560]=44464;x=0;b=Da(3)|0;d=x;x=0;if(d&1){b=Wa()|0;break}k[562]=b;k[560]=43652;x=0;ra(120,a|0,2240);d=x;x=0;if(d&1){g=42;break}k[565]=0;k[564]=44464;x=0;b=Da(3)|0;d=x;x=0;if(d&1){b=Wa()|0;break}k[566]=b;k[564]=43684;x=0;ra(121,a|0,2256);g=x;x=0;if(g&1){g=42;break}k[569]=0;k[568]=44116;x=0;ra(122,a|0,2272);g=x;x=0;if(g&1){g=42;break}k[571]=0;k[570]=44156;x=0;ra(123,a|0,2280);g=x;x=0;if(g&1){g=42;break}return}else g=42;while(0);if((g|0)==42)b=Wa()|0;Sm(e)}Nv(f)}fb(b|0)}function Gs(){var a=0;do if((i[2288]|0)==0?(Qa(2288)|0)!=0:0){x=0;Da(4)|0;a=x;x=0;if(a&1){a=Wa()|0;Bb(2288);fb(a|0)}else{k[11246]=44980;Ya(2288);break}}while(0);return k[11246]|0}function Hs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;ym(b);e=a+8|0;d=k[e>>2]|0;do if((k[a+12>>2]|0)-d>>2>>>0<=c>>>0){x=0;ra(124,e|0,c+1|0);a=x;x=0;if(!(a&1)){d=k[e>>2]|0;break}d=Wa()|0;if(b)zm(b)|0;fb(d|0)}while(0);a=k[d+(c<<2)>>2]|0;if(a){zm(a)|0;d=k[e>>2]|0}k[d+(c<<2)>>2]=b;return}function Is(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=44196;d=a+8|0;e=a+12|0;b=k[d>>2]|0;if((k[e>>2]|0)!=(b|0)){c=0;do{b=k[b+(c<<2)>>2]|0;if(b)zm(b)|0;c=c+1|0;b=k[d>>2]|0}while(c>>>0<(k[e>>2]|0)-b>>2>>>0)}Sm(a+144|0);Nv(d);return}function Js(a){a=a|0;Is(a);mj(a);return}function Ks(a,b){a=a|0;b=b|0;if(Pv(a,b)|0)return k[(k[a+8>>2]|0)+(b<<2)>>2]|0;else{a=Va(4)|0;Aj(a);ub(a|0,640,82)}return 0}function Ls(){Fs(2296,1);k[11245]=2296;return 44980}function Ms(){var a=0;a=Gs()|0;a=k[a>>2]|0;k[11247]=a;ym(a);return 44988}function Ns(){var a=0;do if((i[2456]|0)==0?(Qa(2456)|0)!=0:0){x=0;Da(5)|0;a=x;x=0;if(a&1){a=Wa()|0;Bb(2456);fb(a|0)}else{k[11248]=44988;Ya(2456);break}}while(0);return k[11248]|0}function Os(a){a=a|0;var b=0,c=0;x=0;b=Da(6)|0;c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)}else{c=k[b>>2]|0;k[a>>2]=c;ym(c);return}}function Ps(a,b){a=a|0;b=b|0;b=k[b>>2]|0;k[a>>2]=b;ym(b);return}function Qs(a){a=a|0;zm(k[a>>2]|0)|0;return}function Rs(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;b=c;if((k[a>>2]|0)!=-1){k[b>>2]=a;k[b+4>>2]=191;k[b+8>>2]=0;Om(a,b,192)}r=c;return (k[a+4>>2]|0)+-1|0}function Ss(a,b){a=a|0;b=b|0;a=k[a>>2]|0;return Ks(a,Rs(b)|0)|0}function Ts(a){a=a|0;mj(a);return}function Us(a){a=a|0;if(a)Lb[k[(k[a>>2]|0)+4>>2]&255](a);return}function Vs(a){a=a|0;var b=0;b=k[11052]|0;k[11052]=b+1;k[a+4>>2]=b+1;return}function Ws(a){a=a|0;mj(a);return}function Xs(a,b,c){a=a|0;b=b|0;c=c|0;if(c>>>0<128){c=(Ys()|0)+(c<<1)|0;c=(j[c>>1]&b)<<16>>16!=0}else c=0;return c|0}function Ys(){var a=0,b=0;x=0;a=Da(7)|0;b=x;x=0;if(b&1){b=Wa(0)|0;oc(b)}else return k[a>>2]|0;return 0}function Zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=(c-b|0)>>>2;if((b|0)!=(c|0)){e=b;while(1){a=k[e>>2]|0;if(a>>>0<128){a=(Ys()|0)+(a<<1)|0;a=m[a>>1]|0}else a=0;j[d>>1]=a;e=e+4|0;if((e|0)==(c|0))break;else d=d+2|0}}return b+(f<<2)|0}function _s(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:do if((c|0)==(d|0))c=d;else while(1){a=k[c>>2]|0;if(a>>>0<128?(a=(Ys()|0)+(a<<1)|0,(j[a>>1]&b)<<16>>16!=0):0)break a;c=c+4|0;if((c|0)==(d|0)){c=d;break}}while(0);return c|0}function $s(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a:do if((c|0)==(d|0))c=d;else while(1){a=k[c>>2]|0;if(a>>>0>=128)break a;a=(Ys()|0)+(a<<1)|0;if(!((j[a>>1]&b)<<16>>16))break a;c=c+4|0;if((c|0)==(d|0)){c=d;break}}while(0);return c|0}function at(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(bt()|0)+(b<<2)|0;b=k[b>>2]|0}return b|0}function bt(){var a=0,b=0;x=0;a=Da(8)|0;b=x;x=0;if(b&1){b=Wa(0)|0;oc(b)}else return k[a>>2]|0;return 0}function ct(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=(c-b|0)>>>2;if((b|0)!=(c|0)){d=b;do{a=k[d>>2]|0;if(a>>>0<128){a=(bt()|0)+(a<<2)|0;a=k[a>>2]|0}k[d>>2]=a;d=d+4|0}while((d|0)!=(c|0))}return b+(e<<2)|0}function dt(a,b){a=a|0;b=b|0;if(b>>>0<128){b=(et()|0)+(b<<2)|0;b=k[b>>2]|0}return b|0}function et(){var a=0,b=0;x=0;a=Da(9)|0;b=x;x=0;if(b&1){b=Wa(0)|0;oc(b)}else return k[a>>2]|0;return 0}function ft(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=(c-b|0)>>>2;if((b|0)!=(c|0)){d=b;do{a=k[d>>2]|0;if(a>>>0<128){a=(et()|0)+(a<<2)|0;a=k[a>>2]|0}k[d>>2]=a;d=d+4|0}while((d|0)!=(c|0))}return b+(e<<2)|0}function gt(a,b){a=a|0;b=b|0;return b<<24>>24|0}function ht(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)!=(c|0))while(1){k[d>>2]=i[b>>0];b=b+1|0;if((b|0)==(c|0))break;else d=d+4|0}return c|0}function it(a,b,c){a=a|0;b=b|0;c=c|0;return (b>>>0<128?b&255:c)|0}function jt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=(c-b|0)>>>2;if((b|0)!=(c|0)){f=b;a=e;while(1){e=k[f>>2]|0;i[a>>0]=e>>>0<128?e&255:d;f=f+4|0;if((f|0)==(c|0))break;else a=a+1|0}}return b+(g<<2)|0}function kt(a){a=a|0;var b=0;k[a>>2]=44236;b=k[a+8>>2]|0;if((b|0)!=0?(i[a+12>>0]|0)!=0:0)nj(b);return}function lt(a){a=a|0;kt(a);mj(a);return}function mt(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(bt()|0)+((b&255)<<2)|0;b=k[b>>2]&255}return b|0}function nt(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=(c|0)){a=b;do{b=i[a>>0]|0;if(b<<24>>24>-1){b=(bt()|0)+(b<<24>>24<<2)|0;b=k[b>>2]&255}i[a>>0]=b;a=a+1|0}while((a|0)!=(c|0))}return c|0}function ot(a,b){a=a|0;b=b|0;if(b<<24>>24>-1){b=(et()|0)+(b<<24>>24<<2)|0;b=k[b>>2]&255}return b|0}function pt(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=(c|0)){a=b;do{b=i[a>>0]|0;if(b<<24>>24>-1){b=(et()|0)+(b<<24>>24<<2)|0;b=k[b>>2]&255}i[a>>0]=b;a=a+1|0}while((a|0)!=(c|0))}return c|0}function qt(a,b){a=a|0;b=b|0;return b|0}function rt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((b|0)!=(c|0))while(1){i[d>>0]=i[b>>0]|0;b=b+1|0;if((b|0)==(c|0))break;else d=d+1|0}return c|0}function st(a,b,c){a=a|0;b=b|0;c=c|0;return (b<<24>>24>-1?b:c)|0}function tt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if((b|0)!=(c|0))while(1){a=i[b>>0]|0;i[e>>0]=a<<24>>24>-1?a:d;b=b+1|0;if((b|0)==(c|0))break;else e=e+1|0}return c|0}function ut(a){a=a|0;mj(a);return}function vt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function wt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;k[e>>2]=c;k[h>>2]=f;return 3}function xt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function yt(a){a=a|0;return 1}function zt(a){a=a|0;return 1}function At(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;a=d-c|0;return (a>>>0>>0?a:e)|0}function Bt(a){a=a|0;return 1}function Ct(a,b){a=a|0;b=b|0;var c=0;k[a+4>>2]=b+-1;k[a>>2]=44304;x=0;b=Da(3)|0;c=x;x=0;if(c&1){c=Wa()|0;fb(c|0)}else{k[a+8>>2]=b;return}}function Dt(a){a=a|0;Gu(a);mj(a);return}\nfunction Hl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;ga=r;r=r+624|0;ba=ga+24|0;da=ga+16|0;ca=ga+588|0;Y=ga+576|0;aa=ga;V=ga+536|0;fa=ga+8|0;ea=ga+528|0;L=(a|0)!=0;N=V+40|0;U=N;V=V+39|0;W=fa+4|0;X=Y+12|0;Y=Y+11|0;Z=ca;_=X;$=_-Z|0;O=-2-Z|0;P=_+2|0;Q=ba+288|0;R=ca+9|0;S=R;T=ca+8|0;f=0;w=b;g=0;b=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=mk()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[w>>0]|0;if(!(g<<24>>24)){K=245;break}else h=w;b:while(1){switch(g<<24>>24){case 37:{g=h;K=9;break b}case 0:{g=h;break b}default:{}}J=h+1|0;g=i[J>>0]|0;h=J}c:do if((K|0)==9)while(1){K=0;if((i[g+1>>0]|0)!=37)break c;h=h+1|0;g=g+2|0;if((i[g>>0]|0)==37)K=9;else break}while(0);y=h-w|0;if(L?(k[a>>2]&32|0)==0:0)fl(w,y,a)|0;if((h|0)!=(w|0)){w=g;g=y;continue}o=g+1|0;h=i[o>>0]|0;m=(h<<24>>24)+-48|0;if(m>>>0<10){J=(i[g+2>>0]|0)==36;o=J?g+3|0:o;h=i[o>>0]|0;u=J?m:-1;b=J?1:b}else u=-1;g=h<<24>>24;d:do if((g&-32|0)==32){m=0;while(1){if(!(1<>24)+-32|m;o=o+1|0;h=i[o>>0]|0;g=h<<24>>24;if((g&-32|0)!=32){q=m;g=o;break}}}else{q=0;g=o}while(0);do if(h<<24>>24==42){m=g+1|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;b=1;g=g+3|0;h=k[d+((i[m>>0]|0)+-48<<3)>>2]|0}else{if(b){f=-1;break a}if(!L){x=q;g=m;b=0;J=0;break}b=(k[c>>2]|0)+(4-1)&~(4-1);h=k[b>>2]|0;k[c>>2]=b+4;b=0;g=m}if((h|0)<0){x=q|8192;J=0-h|0}else{x=q;J=h}}else{m=(h<<24>>24)+-48|0;if(m>>>0<10){h=0;do{h=(h*10|0)+m|0;g=g+1|0;m=(i[g>>0]|0)+-48|0}while(m>>>0<10);if((h|0)<0){f=-1;break a}else{x=q;J=h}}else{x=q;J=0}}while(0);e:do if((i[g>>0]|0)==46){m=g+1|0;h=i[m>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10){g=m;h=0}else{g=m;o=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){o=h;break e}}}m=g+2|0;h=(i[m>>0]|0)+-48|0;if(h>>>0<10?(i[g+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=g+4|0;o=k[d+((i[m>>0]|0)+-48<<3)>>2]|0;break}if(b){f=-1;break a}if(L){g=(k[c>>2]|0)+(4-1)&~(4-1);o=k[g>>2]|0;k[c>>2]=g+4;g=m}else{g=m;o=0}}else o=-1;while(0);s=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}m=g+1|0;h=i[56223+(s*58|0)+h>>0]|0;q=h&255;if((q+-1|0)>>>0<8){g=m;s=q}else{I=m;break}}if(!(h<<24>>24)){f=-1;break}m=(u|0)>-1;do if(h<<24>>24==19)if(m){f=-1;break a}else K=52;else{if(m){k[e+(u<<2)>>2]=q;G=d+(u<<3)|0;H=k[G+4>>2]|0;K=aa;k[K>>2]=k[G>>2];k[K+4>>2]=H;K=52;break}if(!L){f=0;break a}Ml(aa,q,c)}while(0);if((K|0)==52?(K=0,!L):0){w=I;g=y;continue}u=i[g>>0]|0;u=(s|0)!=0&(u&15|0)==3?u&-33:u;m=x&-65537;H=(x&8192|0)==0?x:m;f:do switch(u|0){case 110:switch(s|0){case 0:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 1:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 2:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}case 3:{j[k[aa>>2]>>1]=f;w=I;g=y;continue a}case 4:{i[k[aa>>2]>>0]=f;w=I;g=y;continue a}case 6:{k[k[aa>>2]>>2]=f;w=I;g=y;continue a}case 7:{w=k[aa>>2]|0;k[w>>2]=f;k[w+4>>2]=((f|0)<0)<<31>>31;w=I;g=y;continue a}default:{w=I;g=y;continue a}}case 112:{s=H|8;o=o>>>0>8?o:8;u=120;K=64;break}case 88:case 120:{s=H;K=64;break}case 111:{m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;if((h|0)==0&(m|0)==0)g=N;else{g=N;do{g=g+-1|0;i[g>>0]=h&7|48;h=uw(h|0,m|0,3)|0;m=M}while(!((h|0)==0&(m|0)==0))}if(!(H&8)){h=H;s=0;q=56703;K=77}else{s=U-g+1|0;h=H;o=(o|0)<(s|0)?s:o;s=0;q=56703;K=77}break}case 105:case 100:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;if((h|0)<0){g=rw(0,0,g|0,h|0)|0;h=M;m=aa;k[m>>2]=g;k[m+4>>2]=h;m=1;q=56703;K=76;break f}if(!(H&2048)){q=H&1;m=q;q=(q|0)==0?56703:56705;K=76}else{m=1;q=56704;K=76}break}case 117:{h=aa;g=k[h>>2]|0;h=k[h+4>>2]|0;m=0;q=56703;K=76;break}case 99:{i[V>>0]=k[aa>>2];w=V;h=1;s=0;u=56703;g=N;break}case 109:{g=mk()|0;g=nk(k[g>>2]|0)|0;K=82;break}case 115:{g=k[aa>>2]|0;g=(g|0)!=0?g:56713;K=82;break}case 67:{k[fa>>2]=k[aa>>2];k[W>>2]=0;k[aa>>2]=fa;o=-1;K=86;break}case 83:{if(!o){Ol(a,32,J,0,H);g=0;K=98}else K=86;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[aa>>3];k[da>>2]=0;p[t>>3]=n;if((k[t+4>>2]|0)>=0)if(!(H&2048)){G=H&1;F=G;G=(G|0)==0?56721:56726}else{F=1;G=56723}else{n=-n;F=1;G=56720}p[t>>3]=n;E=k[t+4>>2]&2146435072;do if(E>>>0<2146435072|(E|0)==2146435072&0<0){v=+Gk(n,da)*2.0;h=v!=0.0;if(h)k[da>>2]=(k[da>>2]|0)+-1;C=u|32;if((C|0)==97){w=u&32;y=(w|0)==0?G:G+9|0;x=F|2;g=12-o|0;do if(!(o>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[y>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);h=k[da>>2]|0;g=(h|0)<0?0-h|0:h;g=Nl(g,((g|0)<0)<<31>>31,X)|0;if((g|0)==(X|0)){i[Y>>0]=48;g=Y}i[g+-1>>0]=(h>>31&2)+43;s=g+-2|0;i[s>>0]=u+15;q=(o|0)<1;m=(H&8|0)==0;h=ca;while(1){G=~~n;g=h+1|0;i[h>>0]=l[56687+G>>0]|w;n=(n-+(G|0))*16.0;do if((g-Z|0)==1){if(m&(q&n==0.0))break;i[g>>0]=46;g=h+2|0}while(0);if(!(n!=0.0))break;else h=g}o=(o|0)!=0&(O+g|0)<(o|0)?P+o-s|0:$-s+g|0;m=o+x|0;Ol(a,32,J,m,H);if(!(k[a>>2]&32))fl(y,x,a)|0;Ol(a,48,J,m,H^65536);g=g-Z|0;if(!(k[a>>2]&32))fl(ca,g,a)|0;h=_-s|0;Ol(a,48,o-(g+h)|0,0,0);if(!(k[a>>2]&32))fl(s,h,a)|0;Ol(a,32,J,m,H^8192);g=(m|0)<(J|0)?J:m;break}g=(o|0)<0?6:o;if(h){h=(k[da>>2]|0)+-28|0;k[da>>2]=h;n=v*268435456.0}else{n=v;h=k[da>>2]|0}E=(h|0)<0?ba:Q;D=E;h=E;do{B=~~n>>>0;k[h>>2]=B;h=h+4|0;n=(n-+(B>>>0))*1.0e9}while(n!=0.0);m=h;h=k[da>>2]|0;if((h|0)>0){q=E;while(1){s=(h|0)>29?29:h;o=m+-4|0;do if(o>>>0>>0)o=q;else{h=0;do{B=ww(k[o>>2]|0,0,s|0)|0;B=tw(B|0,M|0,h|0,0)|0;h=M;A=Fw(B|0,h|0,1e9,0)|0;k[o>>2]=A;h=Ew(B|0,h|0,1e9,0)|0;o=o+-4|0}while(o>>>0>=q>>>0);if(!h){o=q;break}o=q+-4|0;k[o>>2]=h}while(0);while(1){if(m>>>0<=o>>>0)break;h=m+-4|0;if(!(k[h>>2]|0))m=h;else break}h=(k[da>>2]|0)-s|0;k[da>>2]=h;if((h|0)>0)q=o;else break}}else o=E;if((h|0)<0){y=((g+25|0)/9|0)+1|0;z=(C|0)==102;w=o;while(1){x=0-h|0;x=(x|0)>9?9:x;do if(w>>>0>>0){h=(1<>>x;o=0;s=w;do{B=k[s>>2]|0;k[s>>2]=(B>>>x)+o;o=ia(B&h,q)|0;s=s+4|0}while(s>>>0>>0);h=(k[w>>2]|0)==0?w+4|0:w;if(!o){o=h;break}k[m>>2]=o;o=h;m=m+4|0}else o=(k[w>>2]|0)==0?w+4|0:w;while(0);h=z?E:o;m=(m-h>>2|0)>(y|0)?h+(y<<2)|0:m;h=(k[da>>2]|0)+x|0;k[da>>2]=h;if((h|0)>=0){w=o;break}else w=o}}else w=o;do if(w>>>0>>0){h=(D-w>>2)*9|0;q=k[w>>2]|0;if(q>>>0<10)break;else o=10;do{o=o*10|0;h=h+1|0}while(q>>>0>=o>>>0)}else h=0;while(0);A=(C|0)==103;B=(g|0)!=0;o=g-((C|0)!=102?h:0)+((B&A)<<31>>31)|0;if((o|0)<(((m-D>>2)*9|0)+-9|0)){s=o+9216|0;z=(s|0)/9|0;o=E+(z+-1023<<2)|0;s=((s|0)%9|0)+1|0;if((s|0)<9){q=10;do{q=q*10|0;s=s+1|0}while((s|0)!=9)}else q=10;x=k[o>>2]|0;y=(x>>>0)%(q>>>0)|0;if((y|0)==0?(E+(z+-1022<<2)|0)==(m|0):0)q=w;else K=163;do if((K|0)==163){K=0;v=(((x>>>0)/(q>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;s=(q|0)/2|0;do if(y>>>0>>0)n=.5;else{if((y|0)==(s|0)?(E+(z+-1022<<2)|0)==(m|0):0){n=1.0;break}n=1.5}while(0);do if(F){if((i[G>>0]|0)!=45)break;v=-v;n=-n}while(0);s=x-y|0;k[o>>2]=s;if(!(v+n!=v)){q=w;break}C=s+q|0;k[o>>2]=C;if(C>>>0>999999999){h=w;while(1){q=o+-4|0;k[o>>2]=0;if(q>>>0>>0){h=h+-4|0;k[h>>2]=0}C=(k[q>>2]|0)+1|0;k[q>>2]=C;if(C>>>0>999999999)o=q;else{w=h;o=q;break}}}h=(D-w>>2)*9|0;s=k[w>>2]|0;if(s>>>0<10){q=w;break}else q=10;do{q=q*10|0;h=h+1|0}while(s>>>0>=q>>>0);q=w}while(0);C=o+4|0;w=q;m=m>>>0>C>>>0?C:m}y=0-h|0;while(1){if(m>>>0<=w>>>0){z=0;C=m;break}o=m+-4|0;if(!(k[o>>2]|0))m=o;else{z=1;C=m;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(h|0)&(h|0)>-5){u=u+-1|0;g=g+-1-h|0}else{u=u+-2|0;g=g+-1|0}m=H&8;if(m)break;do if(z){m=k[C+-4>>2]|0;if(!m){o=9;break}if(!((m>>>0)%10|0)){q=10;o=0}else{o=0;break}do{q=q*10|0;o=o+1|0}while(((m>>>0)%(q>>>0)|0|0)==0)}else o=9;while(0);m=((C-D>>2)*9|0)+-9|0;if((u|32|0)==102){m=m-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}else{m=m+h-o|0;m=(m|0)<0?0:m;g=(g|0)<(m|0)?g:m;m=0;break}}else m=H&8;while(0);x=g|m;q=(x|0)!=0&1;s=(u|32|0)==102;if(s){h=(h|0)>0?h:0;u=0}else{o=(h|0)<0?y:h;o=Nl(o,((o|0)<0)<<31>>31,X)|0;if((_-o|0)<2)do{o=o+-1|0;i[o>>0]=48}while((_-o|0)<2);i[o+-1>>0]=(h>>31&2)+43;D=o+-2|0;i[D>>0]=u;h=_-D|0;u=D}y=F+1+g+q+h|0;Ol(a,32,J,y,H);if(!(k[a>>2]&32))fl(G,F,a)|0;Ol(a,48,J,y,H^65536);do if(s){o=w>>>0>E>>>0?E:w;h=o;do{m=Nl(k[h>>2]|0,0,R)|0;do if((h|0)==(o|0)){if((m|0)!=(R|0))break;i[T>>0]=48;m=T}else{if(m>>>0<=ca>>>0)break;do{m=m+-1|0;i[m>>0]=48}while(m>>>0>ca>>>0)}while(0);if(!(k[a>>2]&32))fl(m,S-m|0,a)|0;h=h+4|0}while(h>>>0<=E>>>0);do if(x){if(k[a>>2]&32)break;fl(56755,1,a)|0}while(0);if((g|0)>0&h>>>0>>0){m=h;while(1){h=Nl(k[m>>2]|0,0,R)|0;if(h>>>0>ca>>>0)do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0);if(!(k[a>>2]&32))fl(h,(g|0)>9?9:g,a)|0;m=m+4|0;h=g+-9|0;if(!((g|0)>9&m>>>0>>0)){g=h;break}else g=h}}Ol(a,48,g+9|0,9,0)}else{s=z?C:w+4|0;if((g|0)>-1){q=(m|0)==0;o=w;do{h=Nl(k[o>>2]|0,0,R)|0;if((h|0)==(R|0)){i[T>>0]=48;h=T}do if((o|0)==(w|0)){m=h+1|0;if(!(k[a>>2]&32))fl(h,1,a)|0;if(q&(g|0)<1){h=m;break}if(k[a>>2]&32){h=m;break}fl(56755,1,a)|0;h=m}else{if(h>>>0<=ca>>>0)break;do{h=h+-1|0;i[h>>0]=48}while(h>>>0>ca>>>0)}while(0);m=S-h|0;if(!(k[a>>2]&32))fl(h,(g|0)>(m|0)?m:g,a)|0;g=g-m|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}Ol(a,48,g+18|0,18,0);if(k[a>>2]&32)break;fl(u,_-u|0,a)|0}while(0);Ol(a,32,J,y,H^8192);g=(y|0)<(J|0)?J:y}else{s=(u&32|0)!=0;q=n!=n|0.0!=0.0;h=q?0:F;o=h+3|0;Ol(a,32,J,o,m);g=k[a>>2]|0;if(!(g&32)){fl(G,h,a)|0;g=k[a>>2]|0}if(!(g&32))fl(q?(s?56747:56751):s?56739:56743,3,a)|0;Ol(a,32,J,o,H^8192);g=(o|0)<(J|0)?J:o}while(0);w=I;continue a}default:{m=H;h=o;s=0;u=56703;g=N}}while(0);g:do if((K|0)==64){m=aa;h=k[m>>2]|0;m=k[m+4>>2]|0;q=u&32;if(!((h|0)==0&(m|0)==0)){g=N;do{g=g+-1|0;i[g>>0]=l[56687+(h&15)>>0]|q;h=uw(h|0,m|0,4)|0;m=M}while(!((h|0)==0&(m|0)==0));K=aa;if((s&8|0)==0|(k[K>>2]|0)==0&(k[K+4>>2]|0)==0){h=s;s=0;q=56703;K=77}else{h=s;s=2;q=56703+(u>>4)|0;K=77}}else{g=N;h=s;s=0;q=56703;K=77}}else if((K|0)==76){g=Nl(g,h,N)|0;h=H;s=m;K=77}else if((K|0)==82){K=0;H=tl(g,0,o)|0;G=(H|0)==0;w=g;h=G?o:H-g|0;s=0;u=56703;g=G?g+o|0:H}else if((K|0)==86){K=0;h=0;g=0;q=k[aa>>2]|0;while(1){m=k[q>>2]|0;if(!m)break;g=Sk(ea,m)|0;if((g|0)<0|g>>>0>(o-h|0)>>>0)break;h=g+h|0;if(o>>>0>h>>>0)q=q+4|0;else break}if((g|0)<0){f=-1;break a}Ol(a,32,J,h,H);if(!h){g=0;K=98}else{m=0;o=k[aa>>2]|0;while(1){g=k[o>>2]|0;if(!g){g=h;K=98;break g}g=Sk(ea,g)|0;m=g+m|0;if((m|0)>(h|0)){g=h;K=98;break g}if(!(k[a>>2]&32))fl(ea,g,a)|0;if(m>>>0>=h>>>0){g=h;K=98;break}else o=o+4|0}}}while(0);if((K|0)==98){K=0;Ol(a,32,J,g,H^8192);w=I;g=(J|0)>(g|0)?J:g;continue}if((K|0)==77){K=0;m=(o|0)>-1?h&-65537:h;h=aa;h=(k[h>>2]|0)!=0|(k[h+4>>2]|0)!=0;if((o|0)!=0|h){h=(h&1^1)+(U-g)|0;w=g;h=(o|0)>(h|0)?o:h;u=q;g=N}else{w=N;h=0;u=q;g=N}}q=g-w|0;h=(h|0)<(q|0)?q:h;o=s+h|0;g=(J|0)<(o|0)?o:J;Ol(a,32,g,o,m);if(!(k[a>>2]&32))fl(u,s,a)|0;Ol(a,48,g,o,m^65536);Ol(a,48,h,q,0);if(!(k[a>>2]&32))fl(w,q,a)|0;Ol(a,32,g,o,m^8192);w=I}h:do if((K|0)==245)if(!a)if(b){f=1;while(1){b=k[e+(f<<2)>>2]|0;if(!b)break;Ml(d+(f<<3)|0,b,c);f=f+1|0;if((f|0)>=10){f=1;break h}}if((f|0)<10)while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}else f=1}else f=0;while(0);r=ga;return f|0}function Il(a,b,c){a=a|0;b=b|0;c=c|0;return $k(a,b,c)|0}function Jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;h=r;r=r+112|0;g=h;e=g;f=e+112|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));e=g+4|0;k[e>>2]=a;f=g+8|0;k[f>>2]=-1;k[g+44>>2]=a;k[g+76>>2]=-1;qk(g,0);d=+ok(g,c,1);c=(k[e>>2]|0)-(k[f>>2]|0)+(k[g+108>>2]|0)|0;if(b)k[b>>2]=(c|0)!=0?a+c|0:a;r=h;return +d}function Kl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=r;r=r+112|0;h=i;k[h>>2]=0;f=h+4|0;k[f>>2]=a;k[h+44>>2]=a;g=h+8|0;k[g>>2]=(a|0)<0?-1:a+2147483647|0;k[h+76>>2]=-1;qk(h,0);d=pk(h,c,1,d,e)|0;if(b)k[b>>2]=a+((k[f>>2]|0)+(k[h+108>>2]|0)-(k[g>>2]|0));r=i;return d|0}function Ll(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=k[d>>2]|0;a=(k[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;vw(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function Ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function Nl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295)while(1){d=Fw(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=Ew(a|0,b|0,10,0)|0;if(b>>>0>9|(b|0)==9&a>>>0>4294967295){a=d;b=M}else{a=d;break}}if(a)while(1){c=c+-1|0;i[c>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return c|0}function Ol(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;sw(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){d=c-d|0;do{if(f){fl(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=d&255;else break}else if(!f)break;fl(g,e,a)|0}while(0);r=h;return}function Pl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;h=k[10218]|0;c=h>>>a;if(c&3){a=(c&1^1)+a|0;d=a<<1;c=40912+(d<<2)|0;d=40912+(d+2<<2)|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[10222]|0)>>>0)Pa();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Pa()}else k[10218]=h&~(1<>2]=M|3;M=e+(M|4)|0;k[M>>2]=k[M>>2]|1;M=f;return M|0}g=k[10220]|0;if(o>>>0>g>>>0){if(c){d=2<>>12&16;d=d>>>i;e=d>>>5&8;d=d>>>e;f=d>>>2&4;d=d>>>f;c=d>>>1&2;d=d>>>c;a=d>>>1&1;a=(e|i|f|c|a)+(d>>>a)|0;d=a<<1;c=40912+(d<<2)|0;d=40912+(d+2<<2)|0;f=k[d>>2]|0;i=f+8|0;e=k[i>>2]|0;do if((c|0)!=(e|0)){if(e>>>0<(k[10222]|0)>>>0)Pa();b=e+12|0;if((k[b>>2]|0)==(f|0)){k[b>>2]=c;k[d>>2]=e;j=k[10220]|0;break}else Pa()}else{k[10218]=h&~(1<>2]=o|3;h=f+o|0;k[f+(o|4)>>2]=g|1;k[f+M>>2]=g;if(j){e=k[10223]|0;c=j>>>3;b=c<<1;d=40912+(b<<2)|0;a=k[10218]|0;c=1<>2]|0;if(b>>>0<(k[10222]|0)>>>0)Pa();else{l=a;m=b}}else{k[10218]=a|c;l=40912+(b+2<<2)|0;m=d}k[l>>2]=e;k[m+12>>2]=e;k[e+8>>2]=m;k[e+12>>2]=d}k[10220]=g;k[10223]=h;M=i;return M|0}a=k[10219]|0;if(a){c=(a&0-a)+-1|0;L=c>>>12&16;c=c>>>L;K=c>>>5&8;c=c>>>K;M=c>>>2&4;c=c>>>M;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=k[41176+((K|L|M|a|d)+(c>>>d)<<2)>>2]|0;c=(k[d+4>>2]&-8)-o|0;a=d;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b){i=c;break}}a=(k[b+4>>2]&-8)-o|0;M=a>>>0>>0;c=M?a:c;a=b;d=M?b:d}f=k[10222]|0;if(d>>>0>>0)Pa();h=d+o|0;if(d>>>0>=h>>>0)Pa();g=k[d+24>>2]|0;c=k[d+12>>2]|0;do if((c|0)==(d|0)){a=d+20|0;b=k[a>>2]|0;if(!b){a=d+16|0;b=k[a>>2]|0;if(!b){n=0;break}}while(1){c=b+20|0;e=k[c>>2]|0;if(e){b=e;a=c;continue}c=b+16|0;e=k[c>>2]|0;if(!e)break;else{b=e;a=c}}if(a>>>0>>0)Pa();else{k[a>>2]=0;n=b;break}}else{e=k[d+8>>2]|0;if(e>>>0>>0)Pa();b=e+12|0;if((k[b>>2]|0)!=(d|0))Pa();a=c+8|0;if((k[a>>2]|0)==(d|0)){k[b>>2]=c;k[a>>2]=e;n=c;break}else Pa()}while(0);do if(g){b=k[d+28>>2]|0;a=41176+(b<<2)|0;if((d|0)==(k[a>>2]|0)){k[a>>2]=n;if(!n){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();b=g+16|0;if((k[b>>2]|0)==(d|0))k[b>>2]=n;else k[g+20>>2]=n;if(!n)break}a=k[10222]|0;if(n>>>0>>0)Pa();k[n+24>>2]=g;b=k[d+16>>2]|0;do if(b)if(b>>>0>>0)Pa();else{k[n+16>>2]=b;k[b+24>>2]=n;break}while(0);b=k[d+20>>2]|0;if(b)if(b>>>0<(k[10222]|0)>>>0)Pa();else{k[n+20>>2]=b;k[b+24>>2]=n;break}}while(0);if(i>>>0<16){M=i+o|0;k[d+4>>2]=M|3;M=d+(M+4)|0;k[M>>2]=k[M>>2]|1}else{k[d+4>>2]=o|3;k[d+(o|4)>>2]=i|1;k[d+(i+o)>>2]=i;b=k[10220]|0;if(b){f=k[10223]|0;c=b>>>3;b=c<<1;e=40912+(b<<2)|0;a=k[10218]|0;c=1<>2]|0;if(a>>>0<(k[10222]|0)>>>0)Pa();else{p=b;q=a}}else{k[10218]=a|c;p=40912+(b+2<<2)|0;q=e}k[p>>2]=f;k[q+12>>2]=f;k[f+8>>2]=q;k[f+12>>2]=e}k[10220]=i;k[10223]=h}M=d+8|0;return M|0}else q=o}else q=o}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;l=k[10219]|0;if(l){c=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{q=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(p|q|j)+(v<>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;a=k[41176+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=86}else{g=c;e=0;h=m<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){f=k[i+4>>2]&-8;c=f-m|0;if(c>>>0>>0)if((f|0)==(m|0)){f=i;a=i;v=90;break a}else a=i;else c=g;v=k[i+20>>2]|0;i=k[i+16+(h>>>31<<2)>>2]|0;e=(v|0)==0|(v|0)==(i|0)?e:v;if(!i){v=86;break}else{g=c;h=h<<1}}}while(0);if((v|0)==86){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>n;l=a>>>5&8;a=a>>>l;p=a>>>2&4;a=a>>>p;q=a>>>1&2;a=a>>>q;e=a>>>1&1;e=k[41176+((l|n|p|q|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){h=c;i=a}else{f=e;v=90}}if((v|0)==90)while(1){v=0;q=(k[f+4>>2]&-8)-m|0;e=q>>>0>>0;c=e?q:c;a=e?f:a;e=k[f+16>>2]|0;if(e){f=e;v=90;continue}f=k[f+20>>2]|0;if(!f){h=c;i=a;break}else v=90}if((i|0)!=0?h>>>0<((k[10220]|0)-m|0)>>>0:0){e=k[10222]|0;if(i>>>0>>0)Pa();g=i+m|0;if(i>>>0>=g>>>0)Pa();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){o=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Pa();else{k[a>>2]=0;o=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Pa();b=d+12|0;if((k[b>>2]|0)!=(i|0))Pa();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;o=c;break}else Pa()}while(0);do if(f){b=k[i+28>>2]|0;a=41176+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=o;if(!o){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=o;else k[f+20>>2]=o;if(!o)break}a=k[10222]|0;if(o>>>0>>0)Pa();k[o+24>>2]=f;b=k[i+16>>2]|0;do if(b)if(b>>>0>>0)Pa();else{k[o+16>>2]=b;k[b+24>>2]=o;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[10222]|0)>>>0)Pa();else{k[o+20>>2]=b;k[b+24>>2]=o;break}}while(0);b:do if(h>>>0>=16){k[i+4>>2]=m|3;k[i+(m|4)>>2]=h|1;k[i+(h+m)>>2]=h;b=h>>>3;if(h>>>0<256){a=b<<1;d=40912+(a<<2)|0;c=k[10218]|0;b=1<>2]|0;if(a>>>0<(k[10222]|0)>>>0)Pa();else{s=b;t=a}}else{k[10218]=c|b;s=40912+(a+2<<2)|0;t=d}k[s>>2]=g;k[t+12>>2]=g;k[i+(m+8)>>2]=t;k[i+(m+12)>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;b=41176+(d<<2)|0;k[i+(m+28)>>2]=d;k[i+(m+20)>>2]=0;k[i+(m+16)>>2]=0;a=k[10219]|0;c=1<>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break}b=k[b>>2]|0;c:do if((k[b+4>>2]&-8|0)!=(h|0)){d=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(h|0)){y=c;break c}else{d=d<<1;b=c}}if(a>>>0<(k[10222]|0)>>>0)Pa();else{k[a>>2]=g;k[i+(m+24)>>2]=b;k[i+(m+12)>>2]=g;k[i+(m+8)>>2]=g;break b}}else y=b;while(0);b=y+8|0;a=k[b>>2]|0;M=k[10222]|0;if(a>>>0>=M>>>0&y>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[i+(m+8)>>2]=a;k[i+(m+12)>>2]=y;k[i+(m+24)>>2]=0;break}else Pa()}else{M=h+m|0;k[i+4>>2]=M|3;M=i+(M+4)|0;k[M>>2]=k[M>>2]|1}while(0);M=i+8|0;return M|0}else q=m}else q=m}else q=-1;while(0);c=k[10220]|0;if(c>>>0>=q>>>0){b=c-q|0;a=k[10223]|0;if(b>>>0>15){k[10223]=a+q;k[10220]=b;k[a+(q+4)>>2]=b|1;k[a+c>>2]=b;k[a+4>>2]=q|3}else{k[10220]=0;k[10223]=0;k[a+4>>2]=c|3;M=a+(c+4)|0;k[M>>2]=k[M>>2]|1}M=a+8|0;return M|0}a=k[10221]|0;if(a>>>0>q>>>0){L=a-q|0;k[10221]=L;M=k[10224]|0;k[10224]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}do if(!(k[10336]|0)){a=hb(30)|0;if(!(a+-1&a)){k[10338]=a;k[10337]=a;k[10339]=-1;k[10340]=-1;k[10341]=0;k[10329]=0;y=(zb(0)|0)&-16^1431655768;k[10336]=y;break}else Pa()}while(0);i=q+48|0;h=k[10338]|0;j=q+47|0;g=h+j|0;h=0-h|0;l=g&h;if(l>>>0<=q>>>0){M=0;return M|0}a=k[10328]|0;if((a|0)!=0?(t=k[10326]|0,y=t+l|0,y>>>0<=t>>>0|y>>>0>a>>>0):0){M=0;return M|0}d:do if(!(k[10329]&4)){a=k[10224]|0;e:do if(a){e=41320;while(1){c=k[e>>2]|0;if(c>>>0<=a>>>0?(r=e+4|0,(c+(k[r>>2]|0)|0)>>>0>a>>>0):0){f=e;a=r;break}e=k[e+8>>2]|0;if(!e){v=174;break e}}c=g-(k[10221]|0)&h;if(c>>>0<2147483647){e=bb(c|0)|0;y=(e|0)==((k[f>>2]|0)+(k[a>>2]|0)|0);a=y?c:0;if(y){if((e|0)!=(-1|0)){w=e;p=a;v=194;break d}}else v=184}else a=0}else v=174;while(0);do if((v|0)==174){f=bb(0)|0;if((f|0)!=(-1|0)){a=f;c=k[10337]|0;e=c+-1|0;if(!(e&a))c=l;else c=l-a+(e+a&0-c)|0;a=k[10326]|0;e=a+c|0;if(c>>>0>q>>>0&c>>>0<2147483647){y=k[10328]|0;if((y|0)!=0?e>>>0<=a>>>0|e>>>0>y>>>0:0){a=0;break}e=bb(c|0)|0;y=(e|0)==(f|0);a=y?c:0;if(y){w=f;p=a;v=194;break d}else v=184}else a=0}else a=0}while(0);f:do if((v|0)==184){f=0-c|0;do if(i>>>0>c>>>0&(c>>>0<2147483647&(e|0)!=(-1|0))?(u=k[10338]|0,u=j-c+u&0-u,u>>>0<2147483647):0)if((bb(u|0)|0)==(-1|0)){bb(f|0)|0;break f}else{c=u+c|0;break}while(0);if((e|0)!=(-1|0)){w=e;p=c;v=194;break d}}while(0);k[10329]=k[10329]|4;v=191}else{a=0;v=191}while(0);if((((v|0)==191?l>>>0<2147483647:0)?(w=bb(l|0)|0,x=bb(0)|0,w>>>0>>0&((w|0)!=(-1|0)&(x|0)!=(-1|0))):0)?(z=x-w|0,A=z>>>0>(q+40|0)>>>0,A):0){p=A?z:a;v=194}if((v|0)==194){a=(k[10326]|0)+p|0;k[10326]=a;if(a>>>0>(k[10327]|0)>>>0)k[10327]=a;g=k[10224]|0;g:do if(g){f=41320;do{a=k[f>>2]|0;c=f+4|0;e=k[c>>2]|0;if((w|0)==(a+e|0)){B=a;C=c;D=e;E=f;v=204;break}f=k[f+8>>2]|0}while((f|0)!=0);if(((v|0)==204?(k[E+12>>2]&8|0)==0:0)?g>>>0>>0&g>>>0>=B>>>0:0){k[C>>2]=D+p;M=(k[10221]|0)+p|0;L=g+8|0;L=(L&7|0)==0?0:0-L&7;K=M-L|0;k[10224]=g+L;k[10221]=K;k[g+(L+4)>>2]=K|1;k[g+(M+4)>>2]=40;k[10225]=k[10340];break}a=k[10222]|0;if(w>>>0>>0){k[10222]=w;a=w}c=w+p|0;f=41320;while(1){if((k[f>>2]|0)==(c|0)){e=f;c=f;v=212;break}f=k[f+8>>2]|0;if(!f){c=41320;break}}if((v|0)==212)if(!(k[c+12>>2]&8)){k[e>>2]=w;n=c+4|0;k[n>>2]=(k[n>>2]|0)+p;n=w+8|0;n=(n&7|0)==0?0:0-n&7;j=w+(p+8)|0;j=(j&7|0)==0?0:0-j&7;b=w+(j+p)|0;m=n+q|0;o=w+m|0;l=b-(w+n)-q|0;k[w+(n+4)>>2]=q|3;h:do if((b|0)!=(g|0)){if((b|0)==(k[10223]|0)){M=(k[10220]|0)+l|0;k[10220]=M;k[10223]=o;k[w+(m+4)>>2]=M|1;k[w+(M+m)>>2]=M;break}h=p+4|0;c=k[w+(h+j)>>2]|0;if((c&3|0)==1){i=c&-8;f=c>>>3;i:do if(c>>>0>=256){g=k[w+((j|24)+p)>>2]|0;d=k[w+(p+12+j)>>2]|0;do if((d|0)==(b|0)){e=j|16;d=w+(h+e)|0;c=k[d>>2]|0;if(!c){d=w+(e+p)|0;c=k[d>>2]|0;if(!c){J=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Pa();else{k[d>>2]=0;J=c;break}}else{e=k[w+((j|8)+p)>>2]|0;if(e>>>0>>0)Pa();a=e+12|0;if((k[a>>2]|0)!=(b|0))Pa();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;J=d;break}else Pa()}while(0);if(!g)break;a=k[w+(p+28+j)>>2]|0;c=41176+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(g>>>0<(k[10222]|0)>>>0)Pa();a=g+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=J;else k[g+20>>2]=J;if(!J)break i}else{k[c>>2]=J;if(J)break;k[10219]=k[10219]&~(1<>>0>>0)Pa();k[J+24>>2]=g;b=j|16;a=k[w+(b+p)>>2]|0;do if(a)if(a>>>0>>0)Pa();else{k[J+16>>2]=a;k[a+24>>2]=J;break}while(0);b=k[w+(h+b)>>2]|0;if(!b)break;if(b>>>0<(k[10222]|0)>>>0)Pa();else{k[J+20>>2]=b;k[b+24>>2]=J;break}}else{d=k[w+((j|8)+p)>>2]|0;e=k[w+(p+12+j)>>2]|0;c=40912+(f<<1<<2)|0;do if((d|0)!=(c|0)){if(d>>>0>>0)Pa();if((k[d+12>>2]|0)==(b|0))break;Pa()}while(0);if((e|0)==(d|0)){k[10218]=k[10218]&~(1<>>0>>0)Pa();a=e+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Pa()}while(0);k[d+12>>2]=e;k[F>>2]=d}while(0);b=w+((i|j)+p)|0;e=i+l|0}else e=l;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[w+(m+4)>>2]=e|1;k[w+(e+m)>>2]=e;b=e>>>3;if(e>>>0<256){a=b<<1;d=40912+(a<<2)|0;c=k[10218]|0;b=1<>2]|0;if(a>>>0>=(k[10222]|0)>>>0){K=b;L=a;break}Pa()}while(0);k[K>>2]=o;k[L+12>>2]=o;k[w+(m+8)>>2]=L;k[w+(m+12)>>2]=d;break}b=e>>>8;do if(!b)d=0;else{if(e>>>0>16777215){d=31;break}K=(b+1048320|0)>>>16&8;L=b<>>16&4;L=L<>>16&2;d=14-(J|K|d)+(L<>>15)|0;d=e>>>(d+7|0)&1|d<<1}while(0);b=41176+(d<<2)|0;k[w+(m+28)>>2]=d;k[w+(m+20)>>2]=0;k[w+(m+16)>>2]=0;a=k[10219]|0;c=1<>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break}b=k[b>>2]|0;j:do if((k[b+4>>2]&-8|0)!=(e|0)){d=e<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(e|0)){M=c;break j}else{d=d<<1;b=c}}if(a>>>0<(k[10222]|0)>>>0)Pa();else{k[a>>2]=o;k[w+(m+24)>>2]=b;k[w+(m+12)>>2]=o;k[w+(m+8)>>2]=o;break h}}else M=b;while(0);b=M+8|0;a=k[b>>2]|0;L=k[10222]|0;if(a>>>0>=L>>>0&M>>>0>=L>>>0){k[a+12>>2]=o;k[b>>2]=o;k[w+(m+8)>>2]=a;k[w+(m+12)>>2]=M;k[w+(m+24)>>2]=0;break}else Pa()}else{M=(k[10221]|0)+l|0;k[10221]=M;k[10224]=o;k[w+(m+4)>>2]=M|1}while(0);M=w+(n|8)|0;return M|0}else c=41320;while(1){a=k[c>>2]|0;if(a>>>0<=g>>>0?(b=k[c+4>>2]|0,d=a+b|0,d>>>0>g>>>0):0)break;c=k[c+8>>2]|0}e=a+(b+-39)|0;a=a+(b+-47+((e&7|0)==0?0:0-e&7))|0;e=g+16|0;a=a>>>0>>0?g:a;b=a+8|0;c=w+8|0;c=(c&7|0)==0?0:0-c&7;M=p+-40-c|0;k[10224]=w+c;k[10221]=M;k[w+(c+4)>>2]=M|1;k[w+(p+-36)>>2]=40;k[10225]=k[10340];c=a+4|0;k[c>>2]=27;k[b>>2]=k[10330];k[b+4>>2]=k[10331];k[b+8>>2]=k[10332];k[b+12>>2]=k[10333];k[10330]=w;k[10331]=p;k[10333]=0;k[10332]=b;b=a+28|0;k[b>>2]=7;if((a+32|0)>>>0>>0)do{M=b;b=b+4|0;k[b>>2]=7}while((M+8|0)>>>0>>0);if((a|0)!=(g|0)){f=a-g|0;k[c>>2]=k[c>>2]&-2;k[g+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){a=b<<1;d=40912+(a<<2)|0;c=k[10218]|0;b=1<>2]|0;if(a>>>0<(k[10222]|0)>>>0)Pa();else{G=b;H=a}}else{k[10218]=c|b;G=40912+(a+2<<2)|0;H=d}k[G>>2]=g;k[H+12>>2]=g;k[g+8>>2]=H;k[g+12>>2]=d;break}b=f>>>8;if(b)if(f>>>0>16777215)d=31;else{L=(b+1048320|0)>>>16&8;M=b<>>16&4;M=M<>>16&2;d=14-(K|L|d)+(M<>>15)|0;d=f>>>(d+7|0)&1|d<<1}else d=0;c=41176+(d<<2)|0;k[g+28>>2]=d;k[g+20>>2]=0;k[e>>2]=0;b=k[10219]|0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}b=k[c>>2]|0;k:do if((k[b+4>>2]&-8|0)!=(f|0)){d=f<<((d|0)==31?0:25-(d>>>1)|0);while(1){a=b+16+(d>>>31<<2)|0;c=k[a>>2]|0;if(!c)break;if((k[c+4>>2]&-8|0)==(f|0)){I=c;break k}else{d=d<<1;b=c}}if(a>>>0<(k[10222]|0)>>>0)Pa();else{k[a>>2]=g;k[g+24>>2]=b;k[g+12>>2]=g;k[g+8>>2]=g;break g}}else I=b;while(0);b=I+8|0;a=k[b>>2]|0;M=k[10222]|0;if(a>>>0>=M>>>0&I>>>0>=M>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=I;k[g+24>>2]=0;break}else Pa()}}else{M=k[10222]|0;if((M|0)==0|w>>>0>>0)k[10222]=w;k[10330]=w;k[10331]=p;k[10333]=0;k[10227]=k[10336];k[10226]=-1;b=0;do{M=b<<1;L=40912+(M<<2)|0;k[40912+(M+3<<2)>>2]=L;k[40912+(M+2<<2)>>2]=L;b=b+1|0}while((b|0)!=32);M=w+8|0;M=(M&7|0)==0?0:0-M&7;L=p+-40-M|0;k[10224]=w+M;k[10221]=L;k[w+(M+4)>>2]=L|1;k[w+(p+-36)>>2]=40;k[10225]=k[10340]}while(0);b=k[10221]|0;if(b>>>0>q>>>0){L=b-q|0;k[10221]=L;M=k[10224]|0;k[10224]=M+q;k[M+(q+4)>>2]=L|1;k[M+4>>2]=q|3;M=M+8|0;return M|0}}M=mk()|0;k[M>>2]=12;M=0;return M|0}function Ql(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!a)return;b=a+-8|0;h=k[10222]|0;if(b>>>0>>0)Pa();c=k[a+-4>>2]|0;d=c&3;if((d|0)==1)Pa();o=c&-8;q=a+(o+-8)|0;do if(!(c&1)){b=k[b>>2]|0;if(!d)return;i=-8-b|0;l=a+i|0;m=b+o|0;if(l>>>0>>0)Pa();if((l|0)==(k[10223]|0)){b=a+(o+-4)|0;c=k[b>>2]|0;if((c&3|0)!=3){u=l;f=m;break}k[10220]=m;k[b>>2]=c&-2;k[a+(i+4)>>2]=m|1;k[q>>2]=m;return}e=b>>>3;if(b>>>0<256){d=k[a+(i+8)>>2]|0;c=k[a+(i+12)>>2]|0;b=40912+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0>>0)Pa();if((k[d+12>>2]|0)!=(l|0))Pa()}if((c|0)==(d|0)){k[10218]=k[10218]&~(1<>>0>>0)Pa();b=c+8|0;if((k[b>>2]|0)==(l|0))g=b;else Pa()}else g=c+8|0;k[d+12>>2]=c;k[g>>2]=d;u=l;f=m;break}g=k[a+(i+24)>>2]|0;d=k[a+(i+12)>>2]|0;do if((d|0)==(l|0)){c=a+(i+20)|0;b=k[c>>2]|0;if(!b){c=a+(i+16)|0;b=k[c>>2]|0;if(!b){j=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0>>0)Pa();else{k[c>>2]=0;j=b;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Pa();b=e+12|0;if((k[b>>2]|0)!=(l|0))Pa();c=d+8|0;if((k[c>>2]|0)==(l|0)){k[b>>2]=d;k[c>>2]=e;j=d;break}else Pa()}while(0);if(g){b=k[a+(i+28)>>2]|0;c=41176+(b<<2)|0;if((l|0)==(k[c>>2]|0)){k[c>>2]=j;if(!j){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();b=g+16|0;if((k[b>>2]|0)==(l|0))k[b>>2]=j;else k[g+20>>2]=j;if(!j){u=l;f=m;break}}c=k[10222]|0;if(j>>>0>>0)Pa();k[j+24>>2]=g;b=k[a+(i+16)>>2]|0;do if(b)if(b>>>0>>0)Pa();else{k[j+16>>2]=b;k[b+24>>2]=j;break}while(0);b=k[a+(i+20)>>2]|0;if(b)if(b>>>0<(k[10222]|0)>>>0)Pa();else{k[j+20>>2]=b;k[b+24>>2]=j;u=l;f=m;break}else{u=l;f=m}}else{u=l;f=m}}else{u=b;f=o}while(0);if(u>>>0>=q>>>0)Pa();b=a+(o+-4)|0;c=k[b>>2]|0;if(!(c&1))Pa();if(!(c&2)){if((q|0)==(k[10224]|0)){t=(k[10221]|0)+f|0;k[10221]=t;k[10224]=u;k[u+4>>2]=t|1;if((u|0)!=(k[10223]|0))return;k[10223]=0;k[10220]=0;return}if((q|0)==(k[10223]|0)){t=(k[10220]|0)+f|0;k[10220]=t;k[10223]=u;k[u+4>>2]=t|1;k[u+t>>2]=t;return}f=(c&-8)+f|0;e=c>>>3;do if(c>>>0>=256){g=k[a+(o+16)>>2]|0;b=k[a+(o|4)>>2]|0;do if((b|0)==(q|0)){c=a+(o+12)|0;b=k[c>>2]|0;if(!b){c=a+(o+8)|0;b=k[c>>2]|0;if(!b){p=0;break}}while(1){d=b+20|0;e=k[d>>2]|0;if(e){b=e;c=d;continue}d=b+16|0;e=k[d>>2]|0;if(!e)break;else{b=e;c=d}}if(c>>>0<(k[10222]|0)>>>0)Pa();else{k[c>>2]=0;p=b;break}}else{c=k[a+o>>2]|0;if(c>>>0<(k[10222]|0)>>>0)Pa();d=c+12|0;if((k[d>>2]|0)!=(q|0))Pa();e=b+8|0;if((k[e>>2]|0)==(q|0)){k[d>>2]=b;k[e>>2]=c;p=b;break}else Pa()}while(0);if(g){b=k[a+(o+20)>>2]|0;c=41176+(b<<2)|0;if((q|0)==(k[c>>2]|0)){k[c>>2]=p;if(!p){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();b=g+16|0;if((k[b>>2]|0)==(q|0))k[b>>2]=p;else k[g+20>>2]=p;if(!p)break}c=k[10222]|0;if(p>>>0>>0)Pa();k[p+24>>2]=g;b=k[a+(o+8)>>2]|0;do if(b)if(b>>>0>>0)Pa();else{k[p+16>>2]=b;k[b+24>>2]=p;break}while(0);b=k[a+(o+12)>>2]|0;if(b)if(b>>>0<(k[10222]|0)>>>0)Pa();else{k[p+20>>2]=b;k[b+24>>2]=p;break}}}else{d=k[a+o>>2]|0;c=k[a+(o|4)>>2]|0;b=40912+(e<<1<<2)|0;if((d|0)!=(b|0)){if(d>>>0<(k[10222]|0)>>>0)Pa();if((k[d+12>>2]|0)!=(q|0))Pa()}if((c|0)==(d|0)){k[10218]=k[10218]&~(1<>>0<(k[10222]|0)>>>0)Pa();b=c+8|0;if((k[b>>2]|0)==(q|0))n=b;else Pa()}else n=c+8|0;k[d+12>>2]=c;k[n>>2]=d}while(0);k[u+4>>2]=f|1;k[u+f>>2]=f;if((u|0)==(k[10223]|0)){k[10220]=f;return}}else{k[b>>2]=c&-2;k[u+4>>2]=f|1;k[u+f>>2]=f}b=f>>>3;if(f>>>0<256){c=b<<1;e=40912+(c<<2)|0;d=k[10218]|0;b=1<>2]|0;if(c>>>0<(k[10222]|0)>>>0)Pa();else{r=b;s=c}}else{k[10218]=d|b;r=40912+(c+2<<2)|0;s=e}k[r>>2]=u;k[s+12>>2]=u;k[u+8>>2]=s;k[u+12>>2]=e;return}b=f>>>8;if(b)if(f>>>0>16777215)e=31;else{r=(b+1048320|0)>>>16&8;s=b<>>16&4;s=s<>>16&2;e=14-(q|r|e)+(s<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;b=41176+(e<<2)|0;k[u+28>>2]=e;k[u+20>>2]=0;k[u+16>>2]=0;c=k[10219]|0;d=1<>2]|0;b:do if((k[b+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){c=b+16+(e>>>31<<2)|0;d=k[c>>2]|0;if(!d)break;if((k[d+4>>2]&-8|0)==(f|0)){t=d;break b}else{e=e<<1;b=d}}if(c>>>0<(k[10222]|0)>>>0)Pa();else{k[c>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u;break a}}else t=b;while(0);b=t+8|0;c=k[b>>2]|0;s=k[10222]|0;if(c>>>0>=s>>>0&t>>>0>=s>>>0){k[c+12>>2]=u;k[b>>2]=u;k[u+8>>2]=c;k[u+12>>2]=t;k[u+24>>2]=0;break}else Pa()}else{k[10219]=c|d;k[b>>2]=u;k[u+24>>2]=b;k[u+12>>2]=u;k[u+8>>2]=u}while(0);u=(k[10226]|0)+-1|0;k[10226]=u;if(!u)b=41328;else return;while(1){b=k[b>>2]|0;if(!b)break;else b=b+8|0}k[10226]=-1;return}function Rl(a,b){a=a|0;b=b|0;var c=0;if(a){c=ia(b,a)|0;if((b|a)>>>0>65535)c=((c>>>0)/(a>>>0)|0|0)==(b|0)?c:-1}else c=0;b=Pl(c)|0;if(!b)return b|0;if(!(k[b+-4>>2]&3))return b|0;sw(b|0,0,c|0)|0;return b|0}function Sl(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){a=Pl(b)|0;return a|0}if(b>>>0>4294967231){a=mk()|0;k[a>>2]=12;a=0;return a|0}c=Tl(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c){a=c+8|0;return a|0}c=Pl(b)|0;if(!c){a=0;return a|0}d=k[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;vw(c|0,a|0,(d>>>0>>0?d:b)|0)|0;Ql(a);a=c;return a|0}function Tl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=a+4|0;p=k[o>>2]|0;i=p&-8;l=a+i|0;h=k[10222]|0;c=p&3;if(!((c|0)!=1&a>>>0>=h>>>0&a>>>0>>0))Pa();d=a+(i|4)|0;e=k[d>>2]|0;if(!(e&1))Pa();if(!c){if(b>>>0<256){a=0;return a|0}if(i>>>0>=(b+4|0)>>>0?(i-b|0)>>>0<=k[10338]<<1>>>0:0)return a|0;a=0;return a|0}if(i>>>0>=b>>>0){c=i-b|0;if(c>>>0<=15)return a|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|3;k[d>>2]=k[d>>2]|1;Ul(a+b|0,c);return a|0}if((l|0)==(k[10224]|0)){c=(k[10221]|0)+i|0;if(c>>>0<=b>>>0){a=0;return a|0}n=c-b|0;k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|1;k[10224]=a+b;k[10221]=n;return a|0}if((l|0)==(k[10223]|0)){d=(k[10220]|0)+i|0;if(d>>>0>>0){a=0;return a|0}c=d-b|0;if(c>>>0>15){k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=c|1;k[a+d>>2]=c;d=a+(d+4)|0;k[d>>2]=k[d>>2]&-2;d=a+b|0}else{k[o>>2]=p&1|d|2;d=a+(d+4)|0;k[d>>2]=k[d>>2]|1;d=0;c=0}k[10220]=c;k[10223]=d;return a|0}if(e&2){a=0;return a|0}m=(e&-8)+i|0;if(m>>>0>>0){a=0;return a|0}n=m-b|0;f=e>>>3;do if(e>>>0>=256){g=k[a+(i+24)>>2]|0;f=k[a+(i+12)>>2]|0;do if((f|0)==(l|0)){d=a+(i+20)|0;c=k[d>>2]|0;if(!c){d=a+(i+16)|0;c=k[d>>2]|0;if(!c){j=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Pa();else{k[d>>2]=0;j=c;break}}else{e=k[a+(i+8)>>2]|0;if(e>>>0>>0)Pa();c=e+12|0;if((k[c>>2]|0)!=(l|0))Pa();d=f+8|0;if((k[d>>2]|0)==(l|0)){k[c>>2]=f;k[d>>2]=e;j=f;break}else Pa()}while(0);if(g){c=k[a+(i+28)>>2]|0;d=41176+(c<<2)|0;if((l|0)==(k[d>>2]|0)){k[d>>2]=j;if(!j){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();c=g+16|0;if((k[c>>2]|0)==(l|0))k[c>>2]=j;else k[g+20>>2]=j;if(!j)break}d=k[10222]|0;if(j>>>0>>0)Pa();k[j+24>>2]=g;c=k[a+(i+16)>>2]|0;do if(c)if(c>>>0>>0)Pa();else{k[j+16>>2]=c;k[c+24>>2]=j;break}while(0);c=k[a+(i+20)>>2]|0;if(c)if(c>>>0<(k[10222]|0)>>>0)Pa();else{k[j+20>>2]=c;k[c+24>>2]=j;break}}}else{e=k[a+(i+8)>>2]|0;d=k[a+(i+12)>>2]|0;c=40912+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Pa();if((k[e+12>>2]|0)!=(l|0))Pa()}if((d|0)==(e|0)){k[10218]=k[10218]&~(1<>>0>>0)Pa();c=d+8|0;if((k[c>>2]|0)==(l|0))g=c;else Pa()}else g=d+8|0;k[e+12>>2]=d;k[g>>2]=e}while(0);if(n>>>0<16){k[o>>2]=m|p&1|2;b=a+(m|4)|0;k[b>>2]=k[b>>2]|1;return a|0}else{k[o>>2]=p&1|b|2;k[a+(b+4)>>2]=n|3;p=a+(m|4)|0;k[p>>2]=k[p>>2]|1;Ul(a+b|0,n);return a|0}return 0}function Ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=a+b|0;c=k[a+4>>2]|0;do if(!(c&1)){j=k[a>>2]|0;if(!(c&3))return;n=a+(0-j)|0;m=j+b|0;i=k[10222]|0;if(n>>>0>>0)Pa();if((n|0)==(k[10223]|0)){d=a+(b+4)|0;c=k[d>>2]|0;if((c&3|0)!=3){t=n;g=m;break}k[10220]=m;k[d>>2]=c&-2;k[a+(4-j)>>2]=m|1;k[q>>2]=m;return}f=j>>>3;if(j>>>0<256){e=k[a+(8-j)>>2]|0;d=k[a+(12-j)>>2]|0;c=40912+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Pa();if((k[e+12>>2]|0)!=(n|0))Pa()}if((d|0)==(e|0)){k[10218]=k[10218]&~(1<>>0>>0)Pa();c=d+8|0;if((k[c>>2]|0)==(n|0))h=c;else Pa()}else h=d+8|0;k[e+12>>2]=d;k[h>>2]=e;t=n;g=m;break}h=k[a+(24-j)>>2]|0;e=k[a+(12-j)>>2]|0;do if((e|0)==(n|0)){e=16-j|0;d=a+(e+4)|0;c=k[d>>2]|0;if(!c){d=a+e|0;c=k[d>>2]|0;if(!c){l=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Pa();else{k[d>>2]=0;l=c;break}}else{f=k[a+(8-j)>>2]|0;if(f>>>0>>0)Pa();c=f+12|0;if((k[c>>2]|0)!=(n|0))Pa();d=e+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=e;k[d>>2]=f;l=e;break}else Pa()}while(0);if(h){c=k[a+(28-j)>>2]|0;d=41176+(c<<2)|0;if((n|0)==(k[d>>2]|0)){k[d>>2]=l;if(!l){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();c=h+16|0;if((k[c>>2]|0)==(n|0))k[c>>2]=l;else k[h+20>>2]=l;if(!l){t=n;g=m;break}}e=k[10222]|0;if(l>>>0>>0)Pa();k[l+24>>2]=h;c=16-j|0;d=k[a+c>>2]|0;do if(d)if(d>>>0>>0)Pa();else{k[l+16>>2]=d;k[d+24>>2]=l;break}while(0);c=k[a+(c+4)>>2]|0;if(c)if(c>>>0<(k[10222]|0)>>>0)Pa();else{k[l+20>>2]=c;k[c+24>>2]=l;t=n;g=m;break}else{t=n;g=m}}else{t=n;g=m}}else{t=a;g=b}while(0);i=k[10222]|0;if(q>>>0>>0)Pa();c=a+(b+4)|0;d=k[c>>2]|0;if(!(d&2)){if((q|0)==(k[10224]|0)){s=(k[10221]|0)+g|0;k[10221]=s;k[10224]=t;k[t+4>>2]=s|1;if((t|0)!=(k[10223]|0))return;k[10223]=0;k[10220]=0;return}if((q|0)==(k[10223]|0)){s=(k[10220]|0)+g|0;k[10220]=s;k[10223]=t;k[t+4>>2]=s|1;k[t+s>>2]=s;return}g=(d&-8)+g|0;f=d>>>3;do if(d>>>0>=256){h=k[a+(b+24)>>2]|0;e=k[a+(b+12)>>2]|0;do if((e|0)==(q|0)){d=a+(b+20)|0;c=k[d>>2]|0;if(!c){d=a+(b+16)|0;c=k[d>>2]|0;if(!c){p=0;break}}while(1){e=c+20|0;f=k[e>>2]|0;if(f){c=f;d=e;continue}e=c+16|0;f=k[e>>2]|0;if(!f)break;else{c=f;d=e}}if(d>>>0>>0)Pa();else{k[d>>2]=0;p=c;break}}else{f=k[a+(b+8)>>2]|0;if(f>>>0>>0)Pa();c=f+12|0;if((k[c>>2]|0)!=(q|0))Pa();d=e+8|0;if((k[d>>2]|0)==(q|0)){k[c>>2]=e;k[d>>2]=f;p=e;break}else Pa()}while(0);if(h){c=k[a+(b+28)>>2]|0;d=41176+(c<<2)|0;if((q|0)==(k[d>>2]|0)){k[d>>2]=p;if(!p){k[10219]=k[10219]&~(1<>>0<(k[10222]|0)>>>0)Pa();c=h+16|0;if((k[c>>2]|0)==(q|0))k[c>>2]=p;else k[h+20>>2]=p;if(!p)break}d=k[10222]|0;if(p>>>0>>0)Pa();k[p+24>>2]=h;c=k[a+(b+16)>>2]|0;do if(c)if(c>>>0>>0)Pa();else{k[p+16>>2]=c;k[c+24>>2]=p;break}while(0);c=k[a+(b+20)>>2]|0;if(c)if(c>>>0<(k[10222]|0)>>>0)Pa();else{k[p+20>>2]=c;k[c+24>>2]=p;break}}}else{e=k[a+(b+8)>>2]|0;d=k[a+(b+12)>>2]|0;c=40912+(f<<1<<2)|0;if((e|0)!=(c|0)){if(e>>>0>>0)Pa();if((k[e+12>>2]|0)!=(q|0))Pa()}if((d|0)==(e|0)){k[10218]=k[10218]&~(1<>>0>>0)Pa();c=d+8|0;if((k[c>>2]|0)==(q|0))o=c;else Pa()}else o=d+8|0;k[e+12>>2]=d;k[o>>2]=e}while(0);k[t+4>>2]=g|1;k[t+g>>2]=g;if((t|0)==(k[10223]|0)){k[10220]=g;return}}else{k[c>>2]=d&-2;k[t+4>>2]=g|1;k[t+g>>2]=g}c=g>>>3;if(g>>>0<256){d=c<<1;f=40912+(d<<2)|0;e=k[10218]|0;c=1<>2]|0;if(d>>>0<(k[10222]|0)>>>0)Pa();else{r=c;s=d}}else{k[10218]=e|c;r=40912+(d+2<<2)|0;s=f}k[r>>2]=t;k[s+12>>2]=t;k[t+8>>2]=s;k[t+12>>2]=f;return}c=g>>>8;if(c)if(g>>>0>16777215)f=31;else{r=(c+1048320|0)>>>16&8;s=c<>>16&4;s=s<>>16&2;f=14-(q|r|f)+(s<>>15)|0;f=g>>>(f+7|0)&1|f<<1}else f=0;c=41176+(f<<2)|0;k[t+28>>2]=f;k[t+20>>2]=0;k[t+16>>2]=0;d=k[10219]|0;e=1<>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}c=k[c>>2]|0;a:do if((k[c+4>>2]&-8|0)!=(g|0)){f=g<<((f|0)==31?0:25-(f>>>1)|0);while(1){d=c+16+(f>>>31<<2)|0;e=k[d>>2]|0;if(!e)break;if((k[e+4>>2]&-8|0)==(g|0)){c=e;break a}else{f=f<<1;c=e}}if(d>>>0<(k[10222]|0)>>>0)Pa();k[d>>2]=t;k[t+24>>2]=c;k[t+12>>2]=t;k[t+8>>2]=t;return}while(0);d=c+8|0;e=k[d>>2]|0;s=k[10222]|0;if(!(e>>>0>=s>>>0&c>>>0>=s>>>0))Pa();k[e+12>>2]=t;k[d>>2]=t;k[t+8>>2]=e;k[t+12>>2]=c;k[t+24>>2]=0;return}function Vl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;d=k[9321]|0;Zl(42048,d,42104);k[10342]=42892;k[10344]=42912;k[10343]=0;a=k[10720]|0;x=0;ra(62,41368+a|0,42048);f=x;x=0;if(f&1){f=Wa()|0;qn(41376);fb(f|0)}k[41368+(a+72)>>2]=0;k[41368+(a+76)>>2]=-1;e=k[9322]|0;_l(42152,e,42112);k[10364]=42972;k[10365]=42992;c=k[10740]|0;x=0;ra(62,41456+c|0,42152);f=x;x=0;if(f&1){f=Wa()|0;qn(41460);fb(f|0)}a=c+72|0;k[41456+a>>2]=0;b=c+76|0;k[41456+b>>2]=-1;f=k[9320]|0;_l(42200,f,42120);k[10385]=42972;k[10386]=42992;x=0;ra(62,41540+c|0,42200);g=x;x=0;if(g&1){g=Wa()|0;qn(41544);fb(g|0)}k[41540+a>>2]=0;k[41540+b>>2]=-1;g=k[41540+((k[(k[10385]|0)+-12>>2]|0)+24)>>2]|0;k[10406]=42972;k[10407]=42992;x=0;ra(62,41624+c|0,g|0);g=x;x=0;if(g&1){g=Wa()|0;qn(41628);fb(g|0)}k[41624+a>>2]=0;k[41624+b>>2]=-1;k[41368+((k[(k[10342]|0)+-12>>2]|0)+72)>>2]=41456;a=41540+((k[(k[10385]|0)+-12>>2]|0)+4)|0;k[a>>2]=k[a>>2]|8192;k[41540+((k[(k[10385]|0)+-12>>2]|0)+72)>>2]=41456;$l(42248,d,42128);k[10427]=42932;k[10429]=42952;k[10428]=0;a=k[10730]|0;x=0;ra(62,41708+a|0,42248);g=x;x=0;if(g&1){g=Wa()|0;vn(41716);fb(g|0)}k[41708+(a+72)>>2]=0;k[41708+(a+76)>>2]=-1;am(42304,e,42136);k[10449]=43012;k[10450]=43032;c=k[10750]|0;x=0;ra(62,41796+c|0,42304);g=x;x=0;if(g&1){g=Wa()|0;vn(41800);fb(g|0)}a=c+72|0;k[41796+a>>2]=0;b=c+76|0;k[41796+b>>2]=-1;am(42352,f,42144);k[10470]=43012;k[10471]=43032;x=0;ra(62,41880+c|0,42352);g=x;x=0;if(g&1){g=Wa()|0;vn(41884);fb(g|0)}k[41880+a>>2]=0;k[41880+b>>2]=-1;g=k[41880+((k[(k[10470]|0)+-12>>2]|0)+24)>>2]|0;k[10491]=43012;k[10492]=43032;x=0;ra(62,41964+c|0,g|0);g=x;x=0;if(g&1){g=Wa()|0;vn(41968);fb(g|0)}else{k[41964+a>>2]=0;k[41964+b>>2]=-1;k[41708+((k[(k[10427]|0)+-12>>2]|0)+72)>>2]=41796;g=41880+((k[(k[10470]|0)+-12>>2]|0)+4)|0;k[g>>2]=k[g>>2]|8192;k[41880+((k[(k[10470]|0)+-12>>2]|0)+72)>>2]=41796;return}}function Wl(a){a=a|0;x=0;ta(70,41456)|0;a=x;x=0;if(((!(a&1)?(x=0,ta(70,41624)|0,a=x,x=0,!(a&1)):0)?(x=0,ta(71,41796)|0,a=x,x=0,!(a&1)):0)?(x=0,ta(71,41964)|0,a=x,x=0,!(a&1)):0)return;a=Wa(0)|0;oc(a)}function Xl(){Vl(0);tb(187,56757,w|0)|0;return}function Yl(){return}function Zl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;f=e+4|0;d=e;zn(a);k[a>>2]=42600;k[a+32>>2]=b;k[a+40>>2]=c;k[a+48>>2]=-1;i[a+52>>0]=0;Ps(f,a+4|0);k[d>>2]=k[f>>2];x=0;ra(23,a|0,d|0);c=x;x=0;if(c&1){f=Wa()|0;Qs(d);xn(a);fb(f|0)}else{Qs(d);r=e;return}}function _l(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;f=e+4|0;d=e;zn(a);k[a>>2]=42536;k[a+32>>2]=b;Ps(f,a+4|0);k[d>>2]=k[f>>2];x=0;b=Aa(37,d|0,44280)|0;f=x;x=0;if(f&1){f=Wa()|0;Qs(d);xn(a);fb(f|0)}else{Qs(d);k[a+36>>2]=b;k[a+40>>2]=c;f=(Ob[k[(k[b>>2]|0)+28>>2]&127](b)|0)&1;i[a+44>>0]=f;r=e;return}}function $l(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;f=e+4|0;d=e;On(a);k[a>>2]=42472;k[a+32>>2]=b;k[a+40>>2]=c;k[a+48>>2]=-1;i[a+52>>0]=0;Ps(f,a+4|0);k[d>>2]=k[f>>2];x=0;ra(21,a|0,d|0);c=x;x=0;if(c&1){f=Wa()|0;Qs(d);Mn(a);fb(f|0)}else{Qs(d);r=e;return}}function am(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;f=e+4|0;d=e;On(a);k[a>>2]=42408;k[a+32>>2]=b;Ps(f,a+4|0);k[d>>2]=k[f>>2];x=0;b=Aa(37,d|0,44288)|0;f=x;x=0;if(f&1){f=Wa()|0;Qs(d);Mn(a);fb(f|0)}else{Qs(d);k[a+36>>2]=b;k[a+40>>2]=c;f=(Ob[k[(k[b>>2]|0)+28>>2]&127](b)|0)&1;i[a+44>>0]=f;r=e;return}}function bm(a){a=a|0;Mn(a);mj(a);return}function cm(a,b){a=a|0;b=b|0;Ob[k[(k[a>>2]|0)+24>>2]&127](a)|0;b=Ss(b,44288)|0;k[a+36>>2]=b;b=(Ob[k[(k[b>>2]|0)+28>>2]&127](b)|0)&1;i[a+44>>0]=b;return}function dm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j;c=a+36|0;d=a+40|0;e=h+8|0;f=h;b=a+32|0;a:while(1){a=k[c>>2]|0;a=Wb[k[(k[a>>2]|0)+20>>2]&31](a,k[d>>2]|0,h,e,g)|0;l=(k[g>>2]|0)-f|0;if((gl(h,1,l,k[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{i=4;break a}}}if((i|0)==4)a=((dl(k[b>>2]|0)|0)!=0)<<31>>31;r=j;return a|0}function em(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(!(i[a+44>>0]|0))if((c|0)>0){d=b;b=0;while(1){if((Vb[k[(k[a>>2]|0)+52>>2]&63](a,k[d>>2]|0)|0)==-1)break a;b=b+1|0;if((b|0)<(c|0))d=d+4|0;else break}}else b=0;else b=gl(b,4,c,k[a+32>>2]|0)|0;while(0);return b|0}function fm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+32|0;o=s+16|0;c=s+8|0;n=s+4|0;m=s;p=(b|0)==-1;a:do if(!p){k[c>>2]=b;if(i[a+44>>0]|0)if((gl(c,4,1,k[a+32>>2]|0)|0)==1){q=11;break}else{c=-1;break}k[n>>2]=o;j=c+4|0;l=a+36|0;e=a+40|0;f=o+8|0;g=o;h=a+32|0;while(1){a=k[l>>2]|0;a=ac[k[(k[a>>2]|0)+12>>2]&15](a,k[e>>2]|0,c,j,m,o,f,n)|0;if((k[m>>2]|0)==(c|0)){c=-1;break a}if((a|0)==3)break;d=(a|0)==1;if(a>>>0>=2){c=-1;break a}a=(k[n>>2]|0)-g|0;if((gl(o,1,a,k[h>>2]|0)|0)!=(a|0)){c=-1;break a}if(d)c=d?k[m>>2]|0:c;else{q=11;break a}}if((gl(c,1,1,k[h>>2]|0)|0)!=1)c=-1;else q=11}else q=11;while(0);if((q|0)==11)c=p?0:b;r=s;return c|0}function gm(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ss(b,44288)|0;c=a+36|0;k[c>>2]=d;d=Ob[k[(k[d>>2]|0)+24>>2]&127](d)|0;b=a+44|0;k[b>>2]=d;c=k[c>>2]|0;c=(Ob[k[(k[c>>2]|0)+28>>2]&127](c)|0)&1;i[a+53>>0]=c;if((k[b>>2]|0)>8)$r(56783);return}function hm(a){a=a|0;Mn(a);mj(a);return}function im(a){a=a|0;return lm(a,0)|0}function jm(a){a=a|0;return lm(a,1)|0}function km(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;j=l+16|0;h=l+8|0;d=l+4|0;e=l;f=a+52|0;c=(i[f>>0]|0)!=0;a:do if((b|0)==-1)if(c)b=-1;else{b=k[a+48>>2]|0;i[f>>0]=(b|0)!=-1&1}else{g=a+48|0;b:do if(c){k[d>>2]=k[g>>2];c=k[a+36>>2]|0;switch(ac[k[(k[c>>2]|0)+12>>2]&15](c,k[a+40>>2]|0,d,d+4|0,e,j,j+8|0,h)|0){case 1:case 2:{b=-1;break a}case 3:{i[j>>0]=k[g>>2];k[h>>2]=j+1;break}default:{}}c=a+32|0;while(1){d=k[h>>2]|0;if(d>>>0<=j>>>0)break b;a=d+-1|0;k[h>>2]=a;if((kl(i[a>>0]|0,k[c>>2]|0)|0)==-1){b=-1;break a}}}while(0);k[g>>2]=b;i[f>>0]=1}while(0);r=l;return b|0}function lm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;q=r;r=r+32|0;p=q+16|0;o=q+8|0;l=q+4|0;m=q;e=a+52|0;a:do if(i[e>>0]|0){d=a+48|0;c=k[d>>2]|0;if(b){k[d>>2]=-1;i[e>>0]=0}}else{c=k[a+44>>2]|0;c=(c|0)>1?c:1;n=a+32|0;if((c|0)>0){e=0;do{d=hl(k[n>>2]|0)|0;if((d|0)==-1){c=-1;break a}i[p+e>>0]=d;e=e+1|0}while((e|0)<(c|0))}b:do if(!(i[a+53>>0]|0)){g=a+40|0;h=a+36|0;j=o+4|0;c:while(1){s=k[g>>2]|0;e=s;d=k[e>>2]|0;e=k[e+4>>2]|0;t=k[h>>2]|0;f=p+c|0;switch(ac[k[(k[t>>2]|0)+16>>2]&15](t,s,p,f,l,o,j,m)|0){case 2:{c=-1;break a}case 3:break c;case 1:break;default:break b}t=k[g>>2]|0;k[t>>2]=d;k[t+4>>2]=e;if((c|0)==8){c=-1;break a}d=hl(k[n>>2]|0)|0;if((d|0)==-1){c=-1;break a}i[f>>0]=d;c=c+1|0}k[o>>2]=i[p>>0]}else k[o>>2]=i[p>>0];while(0);if(b){c=k[o>>2]|0;k[a+48>>2]=c;break}while(1){if((c|0)<=0)break;c=c+-1|0;if((kl(i[p+c>>0]|0,k[n>>2]|0)|0)==-1){c=-1;break a}}c=k[o>>2]|0}while(0);r=q;return c|0}function mm(a){a=a|0;xn(a);mj(a);return}function nm(a,b){a=a|0;b=b|0;Ob[k[(k[a>>2]|0)+24>>2]&127](a)|0;b=Ss(b,44280)|0;k[a+36>>2]=b;b=(Ob[k[(k[b>>2]|0)+28>>2]&127](b)|0)&1;i[a+44>>0]=b;return}function om(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=r;r=r+16|0;h=j+8|0;g=j;c=a+36|0;d=a+40|0;e=h+8|0;f=h;b=a+32|0;a:while(1){a=k[c>>2]|0;a=Wb[k[(k[a>>2]|0)+20>>2]&31](a,k[d>>2]|0,h,e,g)|0;l=(k[g>>2]|0)-f|0;if((gl(h,1,l,k[b>>2]|0)|0)!=(l|0)){a=-1;break}switch(a|0){case 1:break;case 2:{a=-1;break a}default:{i=4;break a}}}if((i|0)==4)a=((dl(k[b>>2]|0)|0)!=0)<<31>>31;r=j;return a|0}function pm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do if(!(i[a+44>>0]|0))if((c|0)>0){d=b;b=0;while(1){if((Vb[k[(k[a>>2]|0)+52>>2]&63](a,l[d>>0]|0)|0)==-1)break a;b=b+1|0;if((b|0)<(c|0))d=d+1|0;else break}}else b=0;else b=gl(b,1,c,k[a+32>>2]|0)|0;while(0);return b|0}function qm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+32|0;o=s+16|0;c=s+8|0;n=s+4|0;m=s;p=(b|0)==-1;a:do if(!p){i[c>>0]=b;if(i[a+44>>0]|0)if((gl(c,1,1,k[a+32>>2]|0)|0)==1){q=11;break}else{c=-1;break}k[n>>2]=o;l=c+1|0;e=a+36|0;f=a+40|0;g=o+8|0;h=o;j=a+32|0;while(1){a=k[e>>2]|0;a=ac[k[(k[a>>2]|0)+12>>2]&15](a,k[f>>2]|0,c,l,m,o,g,n)|0;if((k[m>>2]|0)==(c|0)){c=-1;break a}if((a|0)==3)break;d=(a|0)==1;if(a>>>0>=2){c=-1;break a}a=(k[n>>2]|0)-h|0;if((gl(o,1,a,k[j>>2]|0)|0)!=(a|0)){c=-1;break a}if(d)c=d?k[m>>2]|0:c;else{q=11;break a}}if((gl(c,1,1,k[j>>2]|0)|0)!=1)c=-1;else q=11}else q=11;while(0);if((q|0)==11)c=p?0:b;r=s;return c|0}function rm(a,b){a=a|0;b=b|0;var c=0,d=0;d=Ss(b,44280)|0;c=a+36|0;k[c>>2]=d;d=Ob[k[(k[d>>2]|0)+24>>2]&127](d)|0;b=a+44|0;k[b>>2]=d;c=k[c>>2]|0;c=(Ob[k[(k[c>>2]|0)+28>>2]&127](c)|0)&1;i[a+53>>0]=c;if((k[b>>2]|0)>8)$r(56783);return}function sm(a){a=a|0;xn(a);mj(a);return}function tm(a){a=a|0;return wm(a,0)|0}function um(a){a=a|0;return wm(a,1)|0}function vm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;j=l+16|0;h=l+4|0;d=l+8|0;e=l;f=a+52|0;c=(i[f>>0]|0)!=0;a:do if((b|0)==-1)if(c)b=-1;else{b=k[a+48>>2]|0;i[f>>0]=(b|0)!=-1&1}else{g=a+48|0;b:do if(c){i[d>>0]=k[g>>2];c=k[a+36>>2]|0;switch(ac[k[(k[c>>2]|0)+12>>2]&15](c,k[a+40>>2]|0,d,d+1|0,e,j,j+8|0,h)|0){case 1:case 2:{b=-1;break a}case 3:{i[j>>0]=k[g>>2];k[h>>2]=j+1;break}default:{}}c=a+32|0;while(1){d=k[h>>2]|0;if(d>>>0<=j>>>0)break b;a=d+-1|0;k[h>>2]=a;if((kl(i[a>>0]|0,k[c>>2]|0)|0)==-1){b=-1;break a}}}while(0);k[g>>2]=b;i[f>>0]=1}while(0);r=l;return b|0}function wm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+32|0;q=s+16|0;p=s+8|0;m=s+4|0;n=s;e=a+52|0;a:do if(i[e>>0]|0){d=a+48|0;c=k[d>>2]|0;if(b){k[d>>2]=-1;i[e>>0]=0}}else{c=k[a+44>>2]|0;c=(c|0)>1?c:1;o=a+32|0;if((c|0)>0){e=0;do{d=hl(k[o>>2]|0)|0;if((d|0)==-1){c=-1;break a}i[q+e>>0]=d;e=e+1|0}while((e|0)<(c|0))}b:do if(!(i[a+53>>0]|0)){g=a+40|0;h=a+36|0;j=p+1|0;c:while(1){t=k[g>>2]|0;e=t;d=k[e>>2]|0;e=k[e+4>>2]|0;u=k[h>>2]|0;f=q+c|0;switch(ac[k[(k[u>>2]|0)+16>>2]&15](u,t,q,f,m,p,j,n)|0){case 2:{c=-1;break a}case 3:break c;case 1:break;default:break b}u=k[g>>2]|0;k[u>>2]=d;k[u+4>>2]=e;if((c|0)==8){c=-1;break a}d=hl(k[o>>2]|0)|0;if((d|0)==-1){c=-1;break a}i[f>>0]=d;c=c+1|0}i[p>>0]=i[q>>0]|0}else i[p>>0]=i[q>>0]|0;while(0);if(b){c=i[p>>0]|0;k[a+48>>2]=c&255}else{while(1){if((c|0)<=0)break;c=c+-1|0;if((kl(l[q+c>>0]|0,k[o>>2]|0)|0)==-1){c=-1;break a}}c=i[p>>0]|0}c=c&255}while(0);r=s;return c|0}function xm(a){a=a|0;return}function ym(a){a=a|0;a=a+4|0;k[a>>2]=(k[a>>2]|0)+1;return}function zm(a){a=a|0;var b=0,c=0;c=a+4|0;b=k[c>>2]|0;k[c>>2]=b+-1;if(!b){Lb[k[(k[a>>2]|0)+8>>2]&255](a);a=1}else a=0;return a|0}function Am(a,b){a=a|0;b=b|0;k[a>>2]=36868;x=0;ra(86,a+4|0,((i[b>>0]&1)==0?b+1|0:k[b+8>>2]|0)|0);a=x;x=0;if(a&1){a=Wa()|0;fb(a|0)}else return}function Bm(a,b){a=a|0;b=b|0;k[a>>2]=36868;x=0;ra(86,a+4|0,b|0);a=x;x=0;if(a&1){a=Wa()|0;fb(a|0)}else return}function Cm(a,b){a=a|0;b=b|0;var c=0,d=0;d=xl(b)|0;c=lj(d+13|0)|0;k[c>>2]=d;k[c+4>>2]=d;k[c+8>>2]=0;c=c+12|0;vw(c|0,b|0,d+1|0)|0;k[a>>2]=c;return}function Dm(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=c;k[a+4>>2]=b;return}function Em(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;_b[k[(k[a>>2]|0)+12>>2]&15](d,a,b);if((k[d+4>>2]|0)==(k[c+4>>2]|0))d=(k[d>>2]|0)==(k[c>>2]|0);else d=0;r=e;return d|0}function Fm(a,b,c){a=a|0;b=b|0;c=c|0;return ((k[b>>2]|0)==(c|0)?(k[b+4>>2]|0)==(a|0):0)|0}function Gm(a,b,c){a=a|0;b=b|0;c=c|0;b=nk(c)|0;Qm(a,b,xl(b)|0);return}function Hm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+16|0;f=g;d=k[b>>2]|0;do if(d){e=i[c>>0]|0;if(!(e&1))e=(e&255)>>>1;else e=k[c+4>>2]|0;if(e){Zm(c,56990)|0;d=k[b>>2]|0}b=k[b+4>>2]|0;_b[k[(k[b>>2]|0)+24>>2]&15](f,b,d);b=i[f>>0]|0;e=(b&1)==0;x=0;va(30,c|0,(e?f+1|0:k[f+8>>2]|0)|0,(e?(b&255)>>>1:k[f+4>>2]|0)|0)|0;b=x;x=0;if(b&1){g=Wa()|0;Sm(f);fb(g|0)}else{Sm(f);break}}while(0);k[a>>2]=k[c>>2];k[a+4>>2]=k[c+4>>2];k[a+8>>2]=k[c+8>>2];k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;r=g;return}function Im(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;d=e+12|0;f=e;Qm(f,c,xl(c)|0);x=0;Fa(10,d|0,b|0,f|0);c=x;x=0;do if(!(c&1)){x=0;ra(87,a|0,d|0);c=x;x=0;if(c&1){e=Wa()|0;Sm(d);d=e;break}else{Sm(d);Sm(f);k[a>>2]=42664;c=k[b+4>>2]|0;f=a+8|0;k[f>>2]=k[b>>2];k[f+4>>2]=c;r=e;return}}else d=Wa()|0;while(0);Sm(f);fb(d|0)}function Jm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=r;r=r+48|0;e=f+24|0;h=f+16|0;g=f;k[h>>2]=b;k[h+4>>2]=c;Pm(g,d);x=0;Fa(10,e|0,h|0,g|0);d=x;x=0;do if(!(d&1)){x=0;ra(87,a|0,e|0);h=x;x=0;if(h&1){h=Wa()|0;Sm(e);e=h;break}else{Sm(e);Sm(g);k[a>>2]=42664;k[a+8>>2]=b;k[a+12>>2]=c;r=f;return}}else e=Wa()|0;while(0);Sm(g);fb(e|0)}function Km(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=r;r=r+48|0;d=e+24|0;g=e+16|0;f=e;k[g>>2]=b;k[g+4>>2]=c;Qm(f,58898,0);x=0;Fa(10,d|0,g|0,f|0);g=x;x=0;do if(!(g&1)){x=0;ra(87,a|0,d|0);g=x;x=0;if(g&1){g=Wa()|0;Sm(d);d=g;break}else{Sm(d);Sm(f);k[a>>2]=42664;k[a+8>>2]=b;k[a+12>>2]=c;r=e;return}}else d=Wa()|0;while(0);Sm(f);fb(d|0)}function Lm(a){a=a|0;wj(a);return}function Mm(a){a=a|0;wj(a);mj(a);return}function Nm(a){a=a|0;return}function Om(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Ab(42676)|0;if((k[a>>2]|0)==1)do Ma(42704,42676)|0;while((k[a>>2]|0)==1);do if(!(k[a>>2]|0)){k[a>>2]=1;x=0;ta(72,42676)|0;d=x;x=0;if((((!(d&1)?(x=0,qa(c|0,b|0),d=x,x=0,!(d&1)):0)?(x=0,ta(73,42676)|0,d=x,x=0,!(d&1)):0)?(k[a>>2]=-1,x=0,ta(72,42676)|0,d=x,x=0,!(d&1)):0)?(x=0,ta(74,42704)|0,d=x,x=0,!(d&1)):0)break;d=Wa(0)|0;cb(d|0)|0;x=0;ta(73,42676)|0;d=x;x=0;if((!(d&1)?(k[a>>2]=0,x=0,ta(72,42676)|0,d=x,x=0,!(d&1)):0)?(x=0,ta(74,42704)|0,d=x,x=0,!(d&1)):0){x=0;Ga(5);x=0}b=Wa()|0;x=0;Ga(3);d=x;x=0;if(d&1){d=Wa(0)|0;oc(d)}else fb(b|0)}else lb(42676)|0;while(0);return}function Pm(a,b){a=a|0;b=b|0;if(!(i[b>>0]&1)){k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2]}else Qm(a,k[b+8>>2]|0,k[b+4>>2]|0);return}function Qm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0>4294967279)ij(a);if(c>>>0<11){i[a>>0]=c<<1;a=a+1|0}else{e=c+16&-16;d=lj(e)|0;k[a+8>>2]=d;k[a>>2]=e|1;k[a+4>>2]=c;a=d}vw(a|0,b|0,c|0)|0;i[a+c>>0]=0;return}function Rm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(b>>>0>4294967279)ij(a);if(b>>>0<11){i[a>>0]=b<<1;a=a+1|0}else{e=b+16&-16;d=lj(e)|0;k[a+8>>2]=d;k[a>>2]=e|1;k[a+4>>2]=b;a=d}sw(a|0,c|0,b|0)|0;i[a+b>>0]=0;return}function Sm(a){a=a|0;if(i[a>>0]&1)mj(k[a+8>>2]|0);return}function Tm(a,b){a=a|0;b=b|0;var c=0,d=0;if((a|0)!=(b|0)){c=i[b>>0]|0;d=(c&1)==0;Vm(a,d?b+1|0:k[b+8>>2]|0,d?(c&255)>>>1:k[b+4>>2]|0)|0}return a|0}function Um(a,b){a=a|0;b=b|0;return Vm(a,b,xl(b)|0)|0}function Vm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=i[a>>0]|0;if(!(d&1))f=10;else{d=k[a>>2]|0;f=(d&-2)+-1|0;d=d&255}e=(d&1)==0;do if(f>>>0>=c>>>0){if(e)d=a+1|0;else d=k[a+8>>2]|0;xw(d|0,b|0,c|0)|0;i[d+c>>0]=0;if(!(i[a>>0]&1)){i[a>>0]=c<<1;break}else{k[a+4>>2]=c;break}}else{if(e)d=(d&255)>>>1;else d=k[a+4>>2]|0;an(a,f,c-f|0,d,0,d,c,b)}while(0);return a|0}function Wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i[a>>0]|0;e=(d&1)==0;if(e)d=(d&255)>>>1;else d=k[a+4>>2]|0;do if(d>>>0>=b>>>0)if(e){i[a+1+b>>0]=0;i[a>>0]=b<<1;break}else{i[(k[a+8>>2]|0)+b>>0]=0;k[a+4>>2]=b;break}else Xm(a,b-d|0,c)|0;while(0);return}function Xm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(b){d=i[a>>0]|0;if(!(d&1))e=10;else{d=k[a>>2]|0;e=(d&-2)+-1|0;d=d&255}if(!(d&1))f=(d&255)>>>1;else f=k[a+4>>2]|0;if((e-f|0)>>>0>>0){bn(a,e,b-e+f|0,f,f,0,0);d=i[a>>0]|0}if(!(d&1))e=a+1|0;else e=k[a+8>>2]|0;sw(e+f|0,c|0,b|0)|0;d=f+b|0;if(!(i[a>>0]&1))i[a>>0]=d<<1;else k[a+4>>2]=d;i[e+d>>0]=0}return a|0}function Ym(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(b>>>0>4294967279)ij(a);c=i[a>>0]|0;if(!(c&1))d=10;else{c=k[a>>2]|0;d=(c&-2)+-1|0;c=c&255}if(!(c&1))h=(c&255)>>>1;else h=k[a+4>>2]|0;b=h>>>0>b>>>0?h:b;if(b>>>0<11)g=10;else g=(b+16&-16)+-1|0;a:do if((g|0)!=(d|0)){do if((g|0)!=10){b=g+1|0;if(g>>>0<=d>>>0){x=0;b=ta(67,b|0)|0;f=x;x=0;if(f&1){a=Wa(0)|0;cb(a|0)|0;eb();break a}}else b=lj(b)|0;if(!(c&1)){d=1;e=a+1|0;f=0;break}else{d=1;e=k[a+8>>2]|0;f=1;break}}else{b=a+1|0;d=0;e=k[a+8>>2]|0;f=1}while(0);if(!(c&1))c=(c&255)>>>1;else c=k[a+4>>2]|0;vw(b|0,e|0,c+1|0)|0;if(f)mj(e);if(d){k[a>>2]=g+1|1;k[a+4>>2]=h;k[a+8>>2]=b;break}else{i[a>>0]=h<<1;break}}while(0);return}function Zm(a,b){a=a|0;b=b|0;return $m(a,b,xl(b)|0)|0}function _m(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=i[a>>0]|0;d=(c&1)!=0;if(d){e=(k[a>>2]&-2)+-1|0;f=k[a+4>>2]|0}else{e=10;f=(c&255)>>>1}if((f|0)==(e|0)){bn(a,e,1,e,e,0,0);if(!(i[a>>0]&1))e=7;else e=8}else if(d)e=8;else e=7;if((e|0)==7){i[a>>0]=(f<<1)+2;c=a+1|0;d=f+1|0}else if((e|0)==8){c=k[a+8>>2]|0;d=f+1|0;k[a+4>>2]=d}i[c+f>>0]=b;i[c+d>>0]=0;return}function $m(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=i[a>>0]|0;if(!(d&1))e=10;else{d=k[a>>2]|0;e=(d&-2)+-1|0;d=d&255}if(!(d&1))f=(d&255)>>>1;else f=k[a+4>>2]|0;if((e-f|0)>>>0>=c>>>0){if(c){if(!(d&1))e=a+1|0;else e=k[a+8>>2]|0;vw(e+f|0,b|0,c|0)|0;d=f+c|0;if(!(i[a>>0]&1))i[a>>0]=d<<1;else k[a+4>>2]=d;i[e+d>>0]=0}}else an(a,e,c-e+f|0,f,f,0,c,b);return a|0}function an(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0;if((-18-b|0)>>>0>>0)ij(a);if(!(i[a>>0]&1))m=a+1|0;else m=k[a+8>>2]|0;if(b>>>0<2147483623){j=c+b|0;l=b<<1;j=j>>>0>>0?l:j;j=j>>>0<11?11:j+16&-16}else j=-17;l=lj(j)|0;if(e)vw(l|0,m|0,e|0)|0;if(g)vw(l+e|0,h|0,g|0)|0;c=d-f|0;if((c|0)!=(e|0))vw(l+(g+e)|0,m+(f+e)|0,c-e|0)|0;if((b|0)!=10)mj(m);k[a+8>>2]=l;k[a>>2]=j|1;b=c+g|0;k[a+4>>2]=b;i[l+b>>0]=0;return}function bn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0;if((-17-b|0)>>>0>>0)ij(a);if(!(i[a>>0]&1))l=a+1|0;else l=k[a+8>>2]|0;if(b>>>0<2147483623){h=c+b|0;j=b<<1;h=h>>>0>>0?j:h;h=h>>>0<11?11:h+16&-16}else h=-17;j=lj(h)|0;if(e)vw(j|0,l|0,e|0)|0;c=d-f|0;if((c|0)!=(e|0))vw(j+(g+e)|0,l+(f+e)|0,c-e|0)|0;if((b|0)!=10)mj(l);k[a+8>>2]=j;k[a>>2]=h|1;return}function cn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(c>>>0>1073741807)ij(a);if(c>>>0<2){i[a>>0]=c<<1;a=a+4|0}else{e=c+4&-4;d=lj(e<<2)|0;k[a+8>>2]=d;k[a>>2]=e|1;k[a+4>>2]=c;a=d}Al(a,b,c)|0;k[a+(c<<2)>>2]=0;return}function dn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(b>>>0>1073741807)ij(a);if(b>>>0<2){i[a>>0]=b<<1;a=a+4|0}else{e=b+4&-4;d=lj(e<<2)|0;k[a+8>>2]=d;k[a>>2]=e|1;k[a+4>>2]=b;a=d}Cl(a,c,b)|0;k[a+(b<<2)>>2]=0;return}function en(a){a=a|0;if(i[a>>0]&1)mj(k[a+8>>2]|0);return}function fn(a,b){a=a|0;b=b|0;return gn(a,b,zl(b)|0)|0}function gn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=i[a>>0]|0;if(!(d&1))f=1;else{d=k[a>>2]|0;f=(d&-2)+-1|0;d=d&255}e=(d&1)==0;do if(f>>>0>=c>>>0){if(e)d=a+4|0;else d=k[a+8>>2]|0;Bl(d,b,c)|0;k[d+(c<<2)>>2]=0;if(!(i[a>>0]&1)){i[a>>0]=c<<1;break}else{k[a+4>>2]=c;break}}else{if(e)d=(d&255)>>>1;else d=k[a+4>>2]|0;kn(a,f,c-f|0,d,0,d,c,b)}while(0);return a|0}function hn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(b>>>0>1073741807)ij(a);c=i[a>>0]|0;if(!(c&1))d=1;else{c=k[a>>2]|0;d=(c&-2)+-1|0;c=c&255}if(!(c&1))h=(c&255)>>>1;else h=k[a+4>>2]|0;b=h>>>0>b>>>0?h:b;if(b>>>0<2)g=1;else g=(b+4&-4)+-1|0;a:do if((g|0)!=(d|0)){do if((g|0)!=1){b=(g<<2)+4|0;if(g>>>0<=d>>>0){x=0;b=ta(67,b|0)|0;f=x;x=0;if(f&1){a=Wa(0)|0;cb(a|0)|0;eb();break a}}else b=lj(b)|0;if(!(c&1)){d=1;e=a+4|0;f=0;break}else{d=1;e=k[a+8>>2]|0;f=1;break}}else{b=a+4|0;d=0;e=k[a+8>>2]|0;f=1}while(0);if(!(c&1))c=(c&255)>>>1;else c=k[a+4>>2]|0;Al(b,e,c+1|0)|0;if(f)mj(e);if(d){k[a>>2]=g+1|1;k[a+4>>2]=h;k[a+8>>2]=b;break}else{i[a>>0]=h<<1;break}}while(0);return}function jn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=i[a>>0]|0;d=(c&1)!=0;if(d){e=(k[a>>2]&-2)+-1|0;f=k[a+4>>2]|0}else{e=1;f=(c&255)>>>1}if((f|0)==(e|0)){ln(a,e,1,e,e,0,0);if(!(i[a>>0]&1))e=7;else e=8}else if(d)e=8;else e=7;if((e|0)==7){i[a>>0]=(f<<1)+2;c=a+4|0;d=f+1|0}else if((e|0)==8){c=k[a+8>>2]|0;d=f+1|0;k[a+4>>2]=d}k[c+(f<<2)>>2]=b;k[c+(d<<2)>>2]=0;return}function kn(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0;if((1073741806-b|0)>>>0>>0)ij(a);if(!(i[a>>0]&1))m=a+4|0;else m=k[a+8>>2]|0;if(b>>>0<536870887){j=c+b|0;l=b<<1;j=j>>>0>>0?l:j;j=j>>>0<2?2:j+4&-4}else j=1073741807;l=lj(j<<2)|0;if(e)Al(l,m,e)|0;if(g)Al(l+(e<<2)|0,h,g)|0;c=d-f|0;if((c|0)!=(e|0))Al(l+(g+e<<2)|0,m+(f+e<<2)|0,c-e|0)|0;if((b|0)!=1)mj(m);k[a+8>>2]=l;k[a>>2]=j|1;b=c+g|0;k[a+4>>2]=b;k[l+(b<<2)>>2]=0;return}function ln(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0;if((1073741807-b|0)>>>0>>0)ij(a);if(!(i[a>>0]&1))l=a+4|0;else l=k[a+8>>2]|0;if(b>>>0<536870887){h=c+b|0;j=b<<1;h=h>>>0>>0?j:h;h=h>>>0<2?2:h+4&-4}else h=1073741807;j=lj(h<<2)|0;if(e)Al(j,l,e)|0;c=d-f|0;if((c|0)!=(e|0))Al(j+(g+e<<2)|0,l+(f+e<<2)|0,c-e|0)|0;if((b|0)!=1)mj(l);k[a+8>>2]=j;k[a>>2]=h|1;return}function mn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=b;d=c-e|0;if(d>>>0>4294967279)ij(a);if(d>>>0<11){i[a>>0]=d<<1;f=a+1|0}else{g=d+16&-16;f=lj(g)|0;k[a+8>>2]=f;k[a>>2]=g|1;k[a+4>>2]=d}a=c-e|0;if((b|0)!=(c|0)){d=f;while(1){i[d>>0]=i[b>>0]|0;b=b+1|0;if((b|0)==(c|0))break;else d=d+1|0}}i[f+a>>0]=0;return}function nn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b;d=c-f|0;e=d>>2;if(e>>>0>1073741807)ij(a);if(e>>>0<2){i[a>>0]=d>>>1;a=a+4|0}else{g=e+4&-4;d=lj(g<<2)|0;k[a+8>>2]=d;k[a>>2]=g|1;k[a+4>>2]=e;a=d}e=(c-f|0)>>>2;if((b|0)!=(c|0)){d=a;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}}k[a+(e<<2)>>2]=0;return}function on(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=(k[a+24>>2]|0)==0;k[a+16>>2]=e&1|b;if(!((e&1|b)&k[a+20>>2])){r=c;return}b=Va(16)|0;Co()|0;k[d>>2]=1;k[d+4>>2]=43112;x=0;Fa(11,b|0,57437,d|0);e=x;x=0;if(e&1){e=Wa()|0;Ua(b|0);fb(e|0)}else ub(b|0,864,112)}function pn(a){a=a|0;var b=0;k[a>>2]=43068;x=0;ra(88,a|0,0);b=x;x=0;if(b&1){b=Wa(0)|0;oc(b)}else{Qs(a+28|0);Ql(k[a+32>>2]|0);Ql(k[a+36>>2]|0);Ql(k[a+48>>2]|0);Ql(k[a+60>>2]|0);return}}function qn(a){a=a|0;pn(a);return}function rn(a){a=a|0;pn(a);mj(a);return}function sn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a+40>>2]|0;d=a+32|0;e=a+36|0;if(c)do{c=c+-1|0;_b[k[(k[d>>2]|0)+(c<<2)>>2]&15](b,a,k[(k[e>>2]|0)+(c<<2)>>2]|0)}while((c|0)!=0);return}function tn(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;b=c;Ps(b,a+28|0);r=c;return k[b>>2]|0}function un(a,b){a=a|0;b=b|0;var c=0;k[a+24>>2]=b;k[a+16>>2]=(b|0)==0&1;k[a+20>>2]=0;k[a+4>>2]=4098;k[a+12>>2]=0;k[a+8>>2]=6;c=a+28|0;b=a+32|0;a=b+40|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));Os(c);return}function vn(a){a=a|0;pn(a);return}function wn(a){a=a|0;pn(a);mj(a);return}function xn(a){a=a|0;k[a>>2]=42760;Qs(a+4|0);return}function yn(a){a=a|0;k[a>>2]=42760;Qs(a+4|0);mj(a);return}function zn(a){a=a|0;k[a>>2]=42760;Os(a+4|0);a=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function An(a,b){a=a|0;b=b|0;return}function Bn(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function Cn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}function Dn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}function En(a){a=a|0;return 0}function Fn(a){a=a|0;return 0}function Gn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+12|0;g=a+16|0;a:do if((c|0)>0){e=b;b=0;while(1){d=k[f>>2]|0;if(d>>>0<(k[g>>2]|0)>>>0){k[f>>2]=d+1;d=i[d>>0]|0}else{d=Ob[k[(k[a>>2]|0)+40>>2]&127](a)|0;if((d|0)==-1)break a;d=d&255}i[e>>0]=d;b=b+1|0;if((b|0)<(c|0))e=e+1|0;else break}}else b=0;while(0);return b|0}function Hn(a){a=a|0;return -1}function In(a){a=a|0;var b=0;if((Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1)a=-1;else{b=a+12|0;a=k[b>>2]|0;k[b>>2]=a+1;a=l[a>>0]|0}return a|0}function Jn(a,b){a=a|0;b=b|0;return -1}function Kn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=a+24|0;g=a+28|0;a:do if((c|0)>0){e=b;b=0;while(1){d=k[f>>2]|0;if(d>>>0>=(k[g>>2]|0)>>>0){if((Vb[k[(k[a>>2]|0)+52>>2]&63](a,l[e>>0]|0)|0)==-1)break a}else{h=i[e>>0]|0;k[f>>2]=d+1;i[d>>0]=h}b=b+1|0;if((b|0)<(c|0))e=e+1|0;else break}}else b=0;while(0);return b|0}function Ln(a,b){a=a|0;b=b|0;return -1}function Mn(a){a=a|0;k[a>>2]=42824;Qs(a+4|0);return}function Nn(a){a=a|0;k[a>>2]=42824;Qs(a+4|0);mj(a);return}function On(a){a=a|0;k[a>>2]=42824;Os(a+4|0);a=a+8|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function Pn(a,b){a=a|0;b=b|0;return}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;return a|0}function Rn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}function Sn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=a;k[b>>2]=0;k[b+4>>2]=0;b=a+8|0;k[b>>2]=-1;k[b+4>>2]=-1;return}function Tn(a){a=a|0;return 0}function Un(a){a=a|0;return 0}function Vn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=a+12|0;g=a+16|0;a:do if((c|0)>0){e=b;b=0;while(1){d=k[f>>2]|0;if(d>>>0>=(k[g>>2]|0)>>>0){d=Ob[k[(k[a>>2]|0)+40>>2]&127](a)|0;if((d|0)==-1)break a}else{k[f>>2]=d+4;d=k[d>>2]|0}k[e>>2]=d;b=b+1|0;if((b|0)<(c|0))e=e+4|0;else break}}else b=0;while(0);return b|0}function Wn(a){a=a|0;return -1}function Xn(a){a=a|0;var b=0;if((Ob[k[(k[a>>2]|0)+36>>2]&127](a)|0)==-1)a=-1;else{b=a+12|0;a=k[b>>2]|0;k[b>>2]=a+4;a=k[a>>2]|0}return a|0}function Yn(a,b){a=a|0;b=b|0;return -1}function Zn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;f=a+24|0;g=a+28|0;a:do if((c|0)>0){e=b;b=0;while(1){d=k[f>>2]|0;if(d>>>0>=(k[g>>2]|0)>>>0){if((Vb[k[(k[a>>2]|0)+52>>2]&63](a,k[e>>2]|0)|0)==-1)break a}else{h=k[e>>2]|0;k[f>>2]=d+4;k[d>>2]=h}b=b+1|0;if((b|0)<(c|0))e=e+4|0;else break}}else b=0;while(0);return b|0}function _n(a,b){a=a|0;b=b|0;return -1}function $n(a){a=a|0;pn(a+8|0);return}function ao(a){a=a|0;pn(a+((k[(k[a>>2]|0)+-12>>2]|0)+8)|0);return}function bo(a){a=a|0;pn(a+8|0);mj(a);return}function co(a){a=a|0;bo(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function eo(a){a=a|0;var b=0,c=0,d=0,e=0;d=r;r=r+16|0;c=d;a:do if(k[a+((k[(k[a>>2]|0)+-12>>2]|0)+24)>>2]|0){x=0;ra(65,c|0,a|0);b=x;x=0;b:do if(b&1)b=Wa(0)|0;else{do if(i[c>>0]|0){b=k[a+((k[(k[a>>2]|0)+-12>>2]|0)+24)>>2]|0;x=0;b=ta(k[(k[b>>2]|0)+24>>2]|0,b|0)|0;e=x;x=0;if(!(e&1)){if((b|0)!=-1)break;e=k[(k[a>>2]|0)+-12>>2]|0;x=0;ra(66,a+e|0,k[a+(e+16)>>2]|1|0);e=x;x=0;if(!(e&1))break}b=Wa(0)|0;ro(c);break b}while(0);ro(c);break a}while(0);cb(b|0)|0;x=0;qa(181,a+(k[(k[a>>2]|0)+-12>>2]|0)|0);e=x;x=0;if(!(e&1)){eb();break}b=Wa()|0;x=0;Ga(3);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else fb(b|0)}while(0);r=d;return a|0}function fo(a){a=a|0;var b=0;b=a+16|0;k[b>>2]=k[b>>2]|1;if(!(k[a+20>>2]&1))return;else vb()}function go(a){a=a|0;pn(a+8|0);return}function ho(a){a=a|0;pn(a+((k[(k[a>>2]|0)+-12>>2]|0)+8)|0);return}function io(a){a=a|0;pn(a+8|0);mj(a);return}function jo(a){a=a|0;io(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function ko(a){a=a|0;var b=0,c=0,d=0,e=0;d=r;r=r+16|0;c=d;a:do if(k[a+((k[(k[a>>2]|0)+-12>>2]|0)+24)>>2]|0){x=0;ra(89,c|0,a|0);b=x;x=0;b:do if(b&1)b=Wa(0)|0;else{do if(i[c>>0]|0){b=k[a+((k[(k[a>>2]|0)+-12>>2]|0)+24)>>2]|0;x=0;b=ta(k[(k[b>>2]|0)+24>>2]|0,b|0)|0;e=x;x=0;if(!(e&1)){if((b|0)!=-1)break;e=k[(k[a>>2]|0)+-12>>2]|0;x=0;ra(66,a+e|0,k[a+(e+16)>>2]|1|0);e=x;x=0;if(!(e&1))break}b=Wa(0)|0;zo(c);break b}while(0);zo(c);break a}while(0);cb(b|0)|0;x=0;qa(181,a+(k[(k[a>>2]|0)+-12>>2]|0)|0);e=x;x=0;if(!(e&1)){eb();break}b=Wa()|0;x=0;Ga(3);e=x;x=0;if(e&1){e=Wa(0)|0;oc(e)}else fb(b|0)}while(0);r=d;return a|0}function lo(a,b){a=a|0;b=b|0;return}function mo(a){a=a|0;pn(a+4|0);return}function no(a){a=a|0;pn(a+((k[(k[a>>2]|0)+-12>>2]|0)+4)|0);return}function oo(a){a=a|0;pn(a+4|0);mj(a);return}function po(a){a=a|0;oo(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function qo(a,b){a=a|0;b=b|0;var c=0;i[a>>0]=0;k[a+4>>2]=b;c=k[(k[b>>2]|0)+-12>>2]|0;if(!(k[b+(c+16)>>2]|0)){c=k[b+(c+72)>>2]|0;if(c)eo(c)|0;i[a>>0]=1}return}function ro(a){a=a|0;var b=0,c=0;a=a+4|0;c=k[a>>2]|0;b=k[(k[c>>2]|0)+-12>>2]|0;do if((((k[c+(b+24)>>2]|0)!=0?(k[c+(b+16)>>2]|0)==0:0)?(k[c+(b+4)>>2]&8192|0)!=0:0)?!(gb()|0):0){b=k[a>>2]|0;b=k[b+((k[(k[b>>2]|0)+-12>>2]|0)+24)>>2]|0;x=0;b=ta(k[(k[b>>2]|0)+24>>2]|0,b|0)|0;c=x;x=0;if(!(c&1)){if((b|0)!=-1)break;b=k[a>>2]|0;c=k[(k[b>>2]|0)+-12>>2]|0;x=0;ra(66,b+c|0,k[b+(c+16)>>2]|1|0);c=x;x=0;if(!(c&1))break}c=Wa(0)|0;cb(c|0)|0;x=0;Ga(3);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)}}while(0);return}function so(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;h=o+20|0;j=o+16|0;m=o+8|0;c=o;x=0;ra(65,m|0,a|0);l=x;x=0;a:do if(l&1){c=Wa(0)|0;d=a;e=a;n=19}else{do if(i[m>>0]|0){l=tn(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[c>>2]=l;x=0;l=Aa(37,c|0,43392)|0;g=x;x=0;if(g&1){n=Wa(0)|0;Qs(c);c=n}else{Qs(c);e=k[(k[a>>2]|0)+-12>>2]|0;g=k[a+(e+24)>>2]|0;d=a+e|0;e=a+(e+76)|0;c=k[e>>2]|0;do if((c|0)==-1){c=tn(d)|0;k[h>>2]=c;x=0;c=Aa(37,h|0,44220)|0;p=x;x=0;if(!(p&1)?(x=0,f=Aa(k[(k[c>>2]|0)+28>>2]|0,c|0,32)|0,p=x,x=0,!(p&1)):0){Qs(h);c=f<<24>>24;k[e>>2]=c;n=10;break}c=Wa(0)|0;Qs(h)}else n=10;while(0);if((n|0)==10){p=k[(k[l>>2]|0)+16>>2]|0;k[j>>2]=g;x=0;k[h>>2]=k[j>>2];c=Ba(p|0,l|0,h|0,d|0,c&255|0,b|0)|0;p=x;x=0;if(!(p&1)){if(c)break;p=k[(k[a>>2]|0)+-12>>2]|0;x=0;ra(66,a+p|0,k[a+(p+16)>>2]|5|0);p=x;x=0;if(!(p&1))break}c=Wa(0)|0}}ro(m);d=a;e=a;n=19;break a}while(0);ro(m)}while(0);do if((n|0)==19){cb(c|0)|0;x=0;qa(181,d+(k[(k[e>>2]|0)+-12>>2]|0)|0);p=x;x=0;if(!(p&1)){eb();break}c=Wa()|0;x=0;Ga(3);p=x;x=0;if(p&1){p=Wa(0)|0;oc(p)}else fb(c|0)}while(0);r=o;return a|0}function to(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;h=o+20|0;j=o+16|0;m=o+8|0;c=o;x=0;ra(65,m|0,a|0);l=x;x=0;a:do if(l&1){c=Wa(0)|0;d=a;e=a;n=19}else{do if(i[m>>0]|0){l=tn(a+(k[(k[a>>2]|0)+-12>>2]|0)|0)|0;k[c>>2]=l;x=0;l=Aa(37,c|0,43392)|0;g=x;x=0;if(g&1){n=Wa(0)|0;Qs(c);c=n}else{Qs(c);e=k[(k[a>>2]|0)+-12>>2]|0;g=k[a+(e+24)>>2]|0;d=a+e|0;e=a+(e+76)|0;c=k[e>>2]|0;do if((c|0)==-1){c=tn(d)|0;k[h>>2]=c;x=0;c=Aa(37,h|0,44220)|0;p=x;x=0;if(!(p&1)?(x=0,f=Aa(k[(k[c>>2]|0)+28>>2]|0,c|0,32)|0,p=x,x=0,!(p&1)):0){Qs(h);c=f<<24>>24;k[e>>2]=c;n=10;break}c=Wa(0)|0;Qs(h)}else n=10;while(0);if((n|0)==10){p=k[(k[l>>2]|0)+24>>2]|0;k[j>>2]=g;x=0;k[h>>2]=k[j>>2];c=Ba(p|0,l|0,h|0,d|0,c&255|0,b|0)|0;p=x;x=0;if(!(p&1)){if(c)break;p=k[(k[a>>2]|0)+-12>>2]|0;x=0;ra(66,a+p|0,k[a+(p+16)>>2]|5|0);p=x;x=0;if(!(p&1))break}c=Wa(0)|0}}ro(m);d=a;e=a;n=19;break a}while(0);ro(m)}while(0);do if((n|0)==19){cb(c|0)|0;x=0;qa(181,d+(k[(k[e>>2]|0)+-12>>2]|0)|0);p=x;x=0;if(!(p&1)){eb();break}c=Wa()|0;x=0;Ga(3);p=x;x=0;if(p&1){p=Wa(0)|0;oc(p)}else fb(c|0)}while(0);r=o;return a|0}function uo(a){a=a|0;pn(a+4|0);return}function vo(a){a=a|0;pn(a+((k[(k[a>>2]|0)+-12>>2]|0)+4)|0);return}function wo(a){a=a|0;pn(a+4|0);mj(a);return}function xo(a){a=a|0;wo(a+(k[(k[a>>2]|0)+-12>>2]|0)|0);return}function yo(a,b){a=a|0;b=b|0;var c=0;i[a>>0]=0;k[a+4>>2]=b;c=k[(k[b>>2]|0)+-12>>2]|0;if(!(k[b+(c+16)>>2]|0)){c=k[b+(c+72)>>2]|0;if(c)ko(c)|0;i[a>>0]=1}return}function zo(a){a=a|0;var b=0,c=0;a=a+4|0;c=k[a>>2]|0;b=k[(k[c>>2]|0)+-12>>2]|0;do if((((k[c+(b+24)>>2]|0)!=0?(k[c+(b+16)>>2]|0)==0:0)?(k[c+(b+4)>>2]&8192|0)!=0:0)?!(gb()|0):0){b=k[a>>2]|0;b=k[b+((k[(k[b>>2]|0)+-12>>2]|0)+24)>>2]|0;x=0;b=ta(k[(k[b>>2]|0)+24>>2]|0,b|0)|0;c=x;x=0;if(!(c&1)){if((b|0)!=-1)break;b=k[a>>2]|0;c=k[(k[b>>2]|0)+-12>>2]|0;x=0;ra(66,b+c|0,k[b+(c+16)>>2]|1|0);c=x;x=0;if(!(c&1))break}c=Wa(0)|0;cb(c|0)|0;x=0;Ga(3);c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)}}while(0);return}function Ao(a){a=a|0;return 57453}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)!=1&(c|0)<257)Gm(a,b,c);else Qm(a,57462,35);return}function Co(){if((i[1048]|0)==0?(Qa(1048)|0)!=0:0){k[10778]=43084;tb(72,43112,w|0)|0;Ya(1048)}return 43112}function Do(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d+8|0;f=d;h=c;g=k[h+4>>2]|0;c=f;k[c>>2]=k[h>>2];k[c+4>>2]=g;k[e>>2]=k[f>>2];k[e+4>>2]=k[f+4>>2];Im(a,e,b);k[a>>2]=43048;r=d;return}function Eo(a){a=a|0;Lm(a);return}function Fo(a){a=a|0;Lm(a);mj(a);return}function Go(a){a=a|0;pn(a);mj(a);return}function Ho(a){a=a|0;mj(a);return}function Io(a){a=a|0;return}function Jo(a){a=a|0;return}function Ko(a){a=a|0;mj(a);return}function Lo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a:do if((d|0)==(e|0))g=6;else while(1){if((b|0)==(c|0)){b=-1;break a}a=i[b>>0]|0;f=i[d>>0]|0;if(a<<24>>24>24){b=-1;break a}if(f<<24>>24>24){b=1;break a}b=b+1|0;d=d+1|0;if((d|0)==(e|0)){g=6;break}}while(0);if((g|0)==6)b=(b|0)!=(c|0)&1;return b|0}function Mo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;mn(a,c,d);return}function No(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)==(c|0))a=0;else{a=0;do{a=(i[b>>0]|0)+(a<<4)|0;d=a&-268435456;a=(d>>>24|d)^a;b=b+1|0}while((b|0)!=(c|0))}return a|0}function Oo(a){a=a|0;return}function Po(a){a=a|0;mj(a);return}function Qo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;a:do if((d|0)==(e|0))g=6;else while(1){if((b|0)==(c|0)){b=-1;break a}a=k[b>>2]|0;f=k[d>>2]|0;if((a|0)<(f|0)){b=-1;break a}if((f|0)<(a|0)){b=1;break a}b=b+4|0;d=d+4|0;if((d|0)==(e|0)){g=6;break}}while(0);if((g|0)==6)b=(b|0)!=(c|0)&1;return b|0}function Ro(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;nn(a,c,d);return}function So(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)==(c|0))a=0;else{a=0;do{a=(k[b>>2]|0)+(a<<4)|0;d=a&-268435456;a=(d>>>24|d)^a;b=b+4|0}while((b|0)!=(c|0))}return a|0}function To(a){a=a|0;return}function Uo(a){a=a|0;mj(a);return}function Vo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;q=r;r=r+64|0;o=q+56|0;g=q+52|0;m=q+48|0;h=q+44|0;j=q+40|0;l=q+36|0;n=q+32|0;s=q+8|0;p=q;a:do if(!(k[d+4>>2]&1)){k[m>>2]=-1;s=k[(k[a>>2]|0)+16>>2]|0;k[h>>2]=k[b>>2];k[j>>2]=k[c>>2];k[g>>2]=k[h>>2];k[o>>2]=k[j>>2];g=Nb[s&63](a,g,o,d,e,m)|0;k[b>>2]=g;switch(k[m>>2]|0){case 0:{i[f>>0]=0;break a}case 1:{i[f>>0]=1;break a}default:{i[f>>0]=1;k[e>>2]=4;break a}}}else{g=tn(d)|0;k[l>>2]=g;x=0;a=Aa(37,l|0,44220)|0;m=x;x=0;do if(!(m&1)){zm(g)|0;g=tn(d)|0;k[n>>2]=g;x=0;j=Aa(37,n|0,44360)|0;n=x;x=0;if(n&1){s=Wa()|0;zm(g)|0;g=s;break}zm(g)|0;x=0;ra(k[(k[j>>2]|0)+24>>2]|0,s|0,j|0);n=x;x=0;if(!(n&1)){h=s+12|0;x=0;ra(k[(k[j>>2]|0)+28>>2]|0,h|0,j|0);n=x;x=0;if(!(n&1)){k[p>>2]=k[c>>2];x=0;k[o>>2]=k[p>>2];g=na(7,b|0,o|0,s|0,s+24|0,a|0,e|0,1)|0;e=x;x=0;if(e&1){g=Wa()|0;Sm(s+12|0);Sm(s);break}else{i[f>>0]=(g|0)==(s|0)&1;g=k[b>>2]|0;Sm(s+12|0);Sm(s);break a}}}else h=s;g=Wa()|0;j=M;if((s|0)!=(h|0))do{h=h+-12|0;Sm(h)}while((h|0)!=(s|0))}else{s=Wa()|0;zm(g)|0;g=s}while(0);fb(g|0)}while(0);r=q;return g|0}function Wo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Iu(a,i,h,d,e,f)|0;r=g;return a|0}function Xo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Ju(a,i,h,d,e,f)|0;r=g;return a|0}function Yo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Ku(a,i,h,d,e,f)|0;r=g;return a|0}function Zo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Lu(a,i,h,d,e,f)|0;r=g;return a|0}function _o(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Mu(a,i,h,d,e,f)|0;r=g;return a|0}function $o(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Nu(a,i,h,d,e,f)|0;r=g;return a|0}function ap(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Ou(a,i,h,d,e,f)|0;r=g;return a|0}function bp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Pu(a,i,h,d,e,f)|0;r=g;return a|0}function cp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Qu(a,i,h,d,e,f)|0;r=g;return a|0}function dp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;C=r;r=r+240|0;w=C;q=C+208|0;E=C+32|0;a=C+28|0;D=C+16|0;v=C+12|0;t=C+48|0;u=C+8|0;s=C+4|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;x=0;d=ta(68,d|0)|0;p=x;x=0;do if(p&1)a=Wa()|0;else{k[a>>2]=d;x=0;a=Aa(37,a|0,44220)|0;p=x;x=0;if(!(p&1)?(x=0,Ea(k[(k[a>>2]|0)+32>>2]|0,a|0,57498,57524,q|0)|0,p=x,x=0,!(p&1)):0){zm(d)|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;if(!(i[D>>0]&1))a=10;else a=(k[D>>2]&-2)+-1|0;x=0;Fa(8,D|0,a|0,0);p=x;x=0;a:do if(!(p&1)){o=D+8|0;p=D+1|0;d=(i[D>>0]&1)==0?p:k[o>>2]|0;k[v>>2]=d;k[u>>2]=t;k[s>>2]=0;n=D+4|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){F=29;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;h=(a|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(h)break;else break b;x=0;j=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;m=x;x=0;if(m&1){F=29;break b}if((j|0)!=-1)if(h)break;else break b;else{k[c>>2]=0;F=19;break}}else F=19;while(0);if((F|0)==19){F=0;if(h){g=0;break}else g=0}h=i[D>>0]|0;h=(h&1)==0?(h&255)>>>1:k[n>>2]|0;if((k[v>>2]|0)==(d+h|0)){x=0;Fa(8,D|0,h<<1|0,0);m=x;x=0;if(m&1){F=29;break}if(!(i[D>>0]&1))d=10;else d=(k[D>>2]&-2)+-1|0;x=0;Fa(8,D|0,d|0,0);m=x;x=0;if(m&1){F=29;break}d=(i[D>>0]&1)==0?p:k[o>>2]|0;k[v>>2]=d+h}j=a+12|0;h=k[j>>2]|0;m=a+16|0;if((h|0)==(k[m>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;G=x;x=0;if(G&1){F=29;break}}else h=l[h>>0]|0;if(ep(h&255,16,d,v,s,0,E,t,u,q)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;G=x;x=0;if(G&1){F=29;break}else continue}else{k[j>>2]=g+1;continue}}if((F|0)==29){a=Wa()|0;break}x=0;Fa(8,D|0,(k[v>>2]|0)-d|0,0);G=x;x=0;if((!(G&1)?(y=i[D>>0]|0,z=k[o>>2]|0,x=0,A=Da(3)|0,G=x,x=0,!(G&1)):0)?(x=0,k[w>>2]=f,B=Ea(16,((y&1)==0?p:z)|0,A|0,58882,w|0)|0,G=x,x=0,!(G&1)):0){if((B|0)!=1)k[e>>2]=4;if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;G=x;x=0;if(G&1){F=30;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;G=x;x=0;if(G&1){F=30;break a}if((a|0)==-1){k[c>>2]=0;F=55;break}}if(!d)F=56}else F=55;while(0);if((F|0)==55?d:0)F=56;if((F|0)==56)k[e>>2]=k[e>>2]|2;G=k[b>>2]|0;Sm(D);Sm(E);r=C;return G|0}else F=30}else F=30;while(0);if((F|0)==30)a=Wa()|0;Sm(D);break}a=Wa()|0;zm(d)|0}while(0);Sm(E);fb(a|0);return 0}function ep(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0;o=k[d>>2]|0;p=(o|0)==(c|0);do if(p){m=(i[l+24>>0]|0)==a<<24>>24;if(!m?(i[l+25>>0]|0)!=a<<24>>24:0){n=5;break}k[d>>2]=c+1;i[c>>0]=m?43:45;k[e>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=i[g>>0]|0;if(a<<24>>24==f<<24>>24?(((n&1)==0?(n&255)>>>1:k[g+4>>2]|0)|0)!=0:0){m=k[j>>2]|0;if((m-h|0)>=160){m=0;break}b=k[e>>2]|0;k[j>>2]=m+4;k[m>>2]=b;k[e>>2]=0;m=0;break}g=l+26|0;m=l;while(1){if((i[m>>0]|0)==a<<24>>24)break;m=m+1|0;if((m|0)==(g|0)){m=g;break}}m=m-l|0;if((m|0)>23)m=-1;else{switch(b|0){case 10:case 8:{if((m|0)>=(b|0)){m=-1;break a}break}case 16:{if((m|0)>=22){if(p){m=-1;break a}if((o-c|0)>=3){m=-1;break a}if((i[o+-1>>0]|0)!=48){m=-1;break a}k[e>>2]=0;m=i[57498+m>>0]|0;k[d>>2]=o+1;i[o>>0]=m;m=0;break a}break}default:{}}m=i[57498+m>>0]|0;k[d>>2]=o+1;i[o>>0]=m;k[e>>2]=(k[e>>2]|0)+1;m=0}}while(0);return m|0}function fp(){var a=0,b=0;do if((i[1968]|0)==0?(Qa(1968)|0)!=0:0){x=0;a=va(31,2147483647,58885,0)|0;b=x;x=0;if(b&1){b=Wa()|0;Bb(1968);fb(b|0)}else{k[11196]=a;Ya(1968);break}}while(0);return k[11196]|0}function gp(a){a=a|0;return}function hp(a){a=a|0;mj(a);return}function ip(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;q=r;r=r+64|0;o=q+56|0;g=q+52|0;m=q+48|0;h=q+44|0;j=q+40|0;l=q+36|0;n=q+32|0;s=q+8|0;p=q;a:do if(!(k[d+4>>2]&1)){k[m>>2]=-1;s=k[(k[a>>2]|0)+16>>2]|0;k[h>>2]=k[b>>2];k[j>>2]=k[c>>2];k[g>>2]=k[h>>2];k[o>>2]=k[j>>2];g=Nb[s&63](a,g,o,d,e,m)|0;k[b>>2]=g;switch(k[m>>2]|0){case 0:{i[f>>0]=0;break a}case 1:{i[f>>0]=1;break a}default:{i[f>>0]=1;k[e>>2]=4;break a}}}else{g=tn(d)|0;k[l>>2]=g;x=0;a=Aa(37,l|0,44212)|0;m=x;x=0;do if(!(m&1)){zm(g)|0;g=tn(d)|0;k[n>>2]=g;x=0;j=Aa(37,n|0,44368)|0;n=x;x=0;if(n&1){s=Wa()|0;zm(g)|0;g=s;break}zm(g)|0;x=0;ra(k[(k[j>>2]|0)+24>>2]|0,s|0,j|0);n=x;x=0;if(!(n&1)){h=s+12|0;x=0;ra(k[(k[j>>2]|0)+28>>2]|0,h|0,j|0);n=x;x=0;if(!(n&1)){k[p>>2]=k[c>>2];x=0;k[o>>2]=k[p>>2];g=na(8,b|0,o|0,s|0,s+24|0,a|0,e|0,1)|0;e=x;x=0;if(e&1){g=Wa()|0;en(s+12|0);en(s);break}else{i[f>>0]=(g|0)==(s|0)&1;g=k[b>>2]|0;en(s+12|0);en(s);break a}}}else h=s;g=Wa()|0;j=M;if((s|0)!=(h|0))do{h=h+-12|0;en(h)}while((h|0)!=(s|0))}else{s=Wa()|0;zm(g)|0;g=s}while(0);fb(g|0)}while(0);r=q;return g|0}function jp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Tu(a,i,h,d,e,f)|0;r=g;return a|0}function kp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Uu(a,i,h,d,e,f)|0;r=g;return a|0}function lp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Vu(a,i,h,d,e,f)|0;r=g;return a|0}function mp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Wu(a,i,h,d,e,f)|0;r=g;return a|0}function np(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Xu(a,i,h,d,e,f)|0;r=g;return a|0}function op(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Yu(a,i,h,d,e,f)|0;r=g;return a|0}function pp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=Zu(a,i,h,d,e,f)|0;r=g;return a|0}function qp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=_u(a,i,h,d,e,f)|0;r=g;return a|0}function rp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0;g=r;r=r+16|0;h=g+12|0;i=g+8|0;l=g+4|0;j=g;k[l>>2]=k[b>>2];k[j>>2]=k[c>>2];k[i>>2]=k[l>>2];k[h>>2]=k[j>>2];a=$u(a,i,h,d,e,f)|0;r=g;return a|0}function sp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;B=r;r=r+320|0;v=B;p=B+208|0;D=B+32|0;a=B+28|0;C=B+16|0;u=B+12|0;s=B+48|0;t=B+8|0;q=B+4|0;k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;x=0;d=ta(68,d|0)|0;o=x;x=0;do if(o&1)a=Wa()|0;else{k[a>>2]=d;x=0;a=Aa(37,a|0,44212)|0;o=x;x=0;if(!(o&1)?(x=0,Ea(k[(k[a>>2]|0)+48>>2]|0,a|0,57498,57524,p|0)|0,o=x,x=0,!(o&1)):0){zm(d)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;if(!(i[C>>0]&1))a=10;else a=(k[C>>2]&-2)+-1|0;x=0;Fa(8,C|0,a|0,0);o=x;x=0;a:do if(!(o&1)){n=C+8|0;o=C+1|0;a=(i[C>>0]&1)==0?o:k[n>>2]|0;k[u>>2]=a;k[t>>2]=s;k[q>>2]=0;m=C+4|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){E=30;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;d=0;h=1}else{d=g;h=0}}else{d=0;h=1}j=k[c>>2]|0;do if(j){g=k[j+12>>2]|0;if((g|0)==(k[j+16>>2]|0)){x=0;g=ta(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;l=x;x=0;if(l&1){E=30;break b}}else g=k[g>>2]|0;if((g|0)!=-1)if(h){g=j;break}else{g=j;break b}else{k[c>>2]=0;E=20;break}}else E=20;while(0);if((E|0)==20){E=0;if(h){g=0;break}else g=0}h=i[C>>0]|0;h=(h&1)==0?(h&255)>>>1:k[m>>2]|0;if((k[u>>2]|0)==(a+h|0)){x=0;Fa(8,C|0,h<<1|0,0);l=x;x=0;if(l&1){E=30;break}if(!(i[C>>0]&1))a=10;else a=(k[C>>2]&-2)+-1|0;x=0;Fa(8,C|0,a|0,0);l=x;x=0;if(l&1){E=30;break}a=(i[C>>0]&1)==0?o:k[n>>2]|0;k[u>>2]=a+h}j=d+12|0;h=k[j>>2]|0;l=d+16|0;if((h|0)==(k[l>>2]|0)){x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;F=x;x=0;if(F&1){E=30;break}}else h=k[h>>2]|0;if(tp(h,16,a,u,q,0,D,s,t,p)|0)break;g=k[j>>2]|0;if((g|0)==(k[l>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;F=x;x=0;if(F&1){E=30;break}else{g=d;continue}}else{k[j>>2]=g+4;g=d;continue}}if((E|0)==30){a=Wa()|0;break}x=0;Fa(8,C|0,(k[u>>2]|0)-a|0,0);F=x;x=0;if((!(F&1)?(w=i[C>>0]|0,y=k[n>>2]|0,x=0,z=Da(3)|0,F=x,x=0,!(F&1)):0)?(x=0,k[v>>2]=f,A=Ea(16,((w&1)==0?o:y)|0,z|0,58882,v|0)|0,F=x,x=0,!(F&1)):0){if((A|0)!=1)k[e>>2]=4;if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;F=x;x=0;if(F&1){E=31;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;F=x;x=0;if(F&1){E=31;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{E=59;break}else{k[c>>2]=0;E=57;break}}else E=57;while(0);if((E|0)==57?d:0)E=59;if((E|0)==59)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;Sm(C);Sm(D);r=B;return F|0}else E=31}else E=31;while(0);if((E|0)==31)a=Wa()|0;Sm(C);break}a=Wa()|0;zm(d)|0}while(0);Sm(D);fb(a|0);return 0}function tp(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0,p=0;o=k[d>>2]|0;p=(o|0)==(c|0);do if(p){m=(k[l+96>>2]|0)==(a|0);if(!m?(k[l+100>>2]|0)!=(a|0):0){n=5;break}k[d>>2]=c+1;i[c>>0]=m?43:45;k[e>>2]=0;m=0}else n=5;while(0);a:do if((n|0)==5){n=i[g>>0]|0;if((a|0)==(f|0)?(((n&1)==0?(n&255)>>>1:k[g+4>>2]|0)|0)!=0:0){m=k[j>>2]|0;if((m-h|0)>=160){m=0;break}b=k[e>>2]|0;k[j>>2]=m+4;k[m>>2]=b;k[e>>2]=0;m=0;break}g=l+104|0;m=l;while(1){if((k[m>>2]|0)==(a|0))break;m=m+4|0;if((m|0)==(g|0)){m=g;break}}m=m-l|0;g=m>>2;if((m|0)>92)m=-1;else{switch(b|0){case 10:case 8:{if((g|0)>=(b|0)){m=-1;break a}break}case 16:{if((m|0)>=88){if(p){m=-1;break a}if((o-c|0)>=3){m=-1;break a}if((i[o+-1>>0]|0)!=48){m=-1;break a}k[e>>2]=0;m=i[57498+g>>0]|0;k[d>>2]=o+1;i[o>>0]=m;m=0;break a}break}default:{}}m=i[57498+g>>0]|0;k[d>>2]=o+1;i[o>>0]=m;k[e>>2]=(k[e>>2]|0)+1;m=0}}while(0);return m|0}function up(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0;j=r;r=r+16|0;h=j;b=tn(b)|0;k[h>>2]=b;x=0;e=Aa(37,h|0,44220)|0;l=x;x=0;if((((!(l&1)?(x=0,Ea(k[(k[e>>2]|0)+32>>2]|0,e|0,57498,57524,c|0)|0,l=x,x=0,!(l&1)):0)?(x=0,g=Aa(37,h|0,44360)|0,l=x,x=0,!(l&1)):0)?(x=0,f=ta(k[(k[g>>2]|0)+16>>2]|0,g|0)|0,l=x,x=0,!(l&1)):0)?(i[d>>0]=f,x=0,ra(k[(k[g>>2]|0)+20>>2]|0,a|0,g|0),l=x,x=0,!(l&1)):0){zm(b)|0;r=j;return}l=Wa()|0;zm(b)|0;fb(l|0)}function vp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+16|0;l=m;b=tn(b)|0;k[l>>2]=b;x=0;f=Aa(37,l|0,44220)|0;n=x;x=0;if(((((!(n&1)?(x=0,Ea(k[(k[f>>2]|0)+32>>2]|0,f|0,57498,57530,c|0)|0,n=x,x=0,!(n&1)):0)?(x=0,j=Aa(37,l|0,44360)|0,n=x,x=0,!(n&1)):0)?(x=0,g=ta(k[(k[j>>2]|0)+12>>2]|0,j|0)|0,n=x,x=0,!(n&1)):0)?(i[d>>0]=g,x=0,h=ta(k[(k[j>>2]|0)+16>>2]|0,j|0)|0,n=x,x=0,!(n&1)):0)?(i[e>>0]=h,x=0,ra(k[(k[j>>2]|0)+20>>2]|0,a|0,j|0),n=x,x=0,!(n&1)):0){zm(b)|0;r=m;return}n=Wa()|0;zm(b)|0;fb(n|0)}function wp(a,b,c,d,e,f,g,h,j,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;o=o|0;var p=0,q=0;a:do if(a<<24>>24==f<<24>>24)if(i[b>>0]|0){i[b>>0]=0;c=k[e>>2]|0;k[e>>2]=c+1;i[c>>0]=46;c=i[h>>0]|0;if((((c&1)==0?(c&255)>>>1:k[h+4>>2]|0)|0)!=0?(p=k[m>>2]|0,(p-j|0)<160):0){j=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=j;p=0}else p=0}else p=-1;else{if(a<<24>>24==g<<24>>24?(g=i[h>>0]|0,(((g&1)==0?(g&255)>>>1:k[h+4>>2]|0)|0)!=0):0){if(!(i[b>>0]|0)){p=-1;break}p=k[m>>2]|0;if((p-j|0)>=160){p=0;break}j=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=j;k[n>>2]=0;p=0;break}f=o+32|0;p=o;while(1){if((i[p>>0]|0)==a<<24>>24)break;p=p+1|0;if((p|0)==(f|0)){p=f;break}}f=p-o|0;if((f|0)>31)p=-1;else{g=i[57498+f>>0]|0;switch(f|0){case 24:case 25:{p=k[e>>2]|0;if((p|0)!=(d|0)?(l[p+-1>>0]&95|0)!=(l[c>>0]&127|0):0){p=-1;break a}k[e>>2]=p+1;i[p>>0]=g;p=0;break a}case 23:case 22:{i[c>>0]=80;p=k[e>>2]|0;k[e>>2]=p+1;i[p>>0]=g;p=0;break a}default:{p=g&95;if((((p|0)==(i[c>>0]|0)?(i[c>>0]=p|128,(i[b>>0]|0)!=0):0)?(i[b>>0]=0,c=i[h>>0]|0,(((c&1)==0?(c&255)>>>1:k[h+4>>2]|0)|0)!=0):0)?(q=k[m>>2]|0,(q-j|0)<160):0){j=k[n>>2]|0;k[m>>2]=q+4;k[q>>2]=j}m=k[e>>2]|0;k[e>>2]=m+1;i[m>>0]=g;if((f|0)>21){p=0;break a}k[n>>2]=(k[n>>2]|0)+1;p=0;break a}}}}while(0);return p|0}function xp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=r;r=r+16|0;h=i;b=tn(b)|0;k[h>>2]=b;x=0;e=Aa(37,h|0,44212)|0;j=x;x=0;if((((!(j&1)?(x=0,Ea(k[(k[e>>2]|0)+48>>2]|0,e|0,57498,57524,c|0)|0,j=x,x=0,!(j&1)):0)?(x=0,g=Aa(37,h|0,44368)|0,j=x,x=0,!(j&1)):0)?(x=0,f=ta(k[(k[g>>2]|0)+16>>2]|0,g|0)|0,j=x,x=0,!(j&1)):0)?(k[d>>2]=f,x=0,ra(k[(k[g>>2]|0)+20>>2]|0,a|0,g|0),j=x,x=0,!(j&1)):0){zm(b)|0;r=i;return}j=Wa()|0;zm(b)|0;fb(j|0)}function yp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=r;r=r+16|0;j=l;b=tn(b)|0;k[j>>2]=b;x=0;f=Aa(37,j|0,44212)|0;m=x;x=0;if(((((!(m&1)?(x=0,Ea(k[(k[f>>2]|0)+48>>2]|0,f|0,57498,57530,c|0)|0,m=x,x=0,!(m&1)):0)?(x=0,i=Aa(37,j|0,44368)|0,m=x,x=0,!(m&1)):0)?(x=0,g=ta(k[(k[i>>2]|0)+12>>2]|0,i|0)|0,m=x,x=0,!(m&1)):0)?(k[d>>2]=g,x=0,h=ta(k[(k[i>>2]|0)+16>>2]|0,i|0)|0,m=x,x=0,!(m&1)):0)?(k[e>>2]=h,x=0,ra(k[(k[i>>2]|0)+20>>2]|0,a|0,i|0),m=x,x=0,!(m&1)):0){zm(b)|0;r=l;return}m=Wa()|0;zm(b)|0;fb(m|0)}function zp(a,b,c,d,e,f,g,h,j,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;m=m|0;n=n|0;o=o|0;var p=0,q=0;a:do if((a|0)==(f|0))if(i[b>>0]|0){i[b>>0]=0;c=k[e>>2]|0;k[e>>2]=c+1;i[c>>0]=46;c=i[h>>0]|0;if((((c&1)==0?(c&255)>>>1:k[h+4>>2]|0)|0)!=0?(p=k[m>>2]|0,(p-j|0)<160):0){j=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=j;p=0}else p=0}else p=-1;else{if((a|0)==(g|0)?(g=i[h>>0]|0,(((g&1)==0?(g&255)>>>1:k[h+4>>2]|0)|0)!=0):0){if(!(i[b>>0]|0)){p=-1;break}p=k[m>>2]|0;if((p-j|0)>=160){p=0;break}j=k[n>>2]|0;k[m>>2]=p+4;k[p>>2]=j;k[n>>2]=0;p=0;break}f=o+128|0;p=o;while(1){if((k[p>>2]|0)==(a|0))break;p=p+4|0;if((p|0)==(f|0)){p=f;break}}f=p-o|0;p=f>>2;if((f|0)<=124){g=i[57498+p>>0]|0;switch(p|0){case 24:case 25:{p=k[e>>2]|0;if((p|0)!=(d|0)?(l[p+-1>>0]&95|0)!=(l[c>>0]&127|0):0){p=-1;break a}k[e>>2]=p+1;i[p>>0]=g;p=0;break a}case 23:case 22:{i[c>>0]=80;break}default:{p=g&95;if((((p|0)==(i[c>>0]|0)?(i[c>>0]=p|128,(i[b>>0]|0)!=0):0)?(i[b>>0]=0,c=i[h>>0]|0,(((c&1)==0?(c&255)>>>1:k[h+4>>2]|0)|0)!=0):0)?(q=k[m>>2]|0,(q-j|0)<160):0){j=k[n>>2]|0;k[m>>2]=q+4;k[q>>2]=j}}}m=k[e>>2]|0;k[e>>2]=m+1;i[m>>0]=g;if((f|0)>84)p=0;else{k[n>>2]=(k[n>>2]|0)+1;p=0}}else p=-1}while(0);return p|0}function Ap(a){a=a|0;return}function Bp(a){a=a|0;mj(a);return}function Cp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+32|0;f=m+20|0;g=m+16|0;h=m+12|0;l=m;a:do if(!(k[c+4>>2]&1)){l=k[(k[a>>2]|0)+24>>2]|0;k[g>>2]=k[b>>2];k[f>>2]=k[g>>2];f=Wb[l&31](a,f,c,d,e&1)|0}else{f=tn(c)|0;k[h>>2]=f;x=0;g=Aa(37,h|0,44360)|0;j=x;x=0;b:do if(j&1){m=Wa()|0;zm(f)|0;f=m}else{zm(f)|0;f=k[g>>2]|0;if(e)Mb[k[f+24>>2]&127](l,g);else Mb[k[f+28>>2]&127](l,g);a=i[l>>0]|0;j=(a&1)==0;f=l+1|0;e=l+8|0;h=j?f:l+1|0;f=j?f:k[l+8>>2]|0;j=l+4|0;c=(a&1)==0;c:do if((f|0)!=((c?h:k[e>>2]|0)+(c?(a&255)>>>1:k[j>>2]|0)|0)){d:while(1){g=i[f>>0]|0;d=k[b>>2]|0;do if(d){c=d+24|0;a=k[c>>2]|0;if((a|0)!=(k[d+28>>2]|0)){k[c>>2]=a+1;i[a>>0]=g;break}x=0;g=Aa(k[(k[d>>2]|0)+52>>2]|0,d|0,g&255|0)|0;a=x;x=0;if(a&1)break d;if((g|0)==-1)k[b>>2]=0}while(0);f=f+1|0;a=i[l>>0]|0;c=(a&1)==0;if((f|0)==((c?h:k[e>>2]|0)+(c?(a&255)>>>1:k[j>>2]|0)|0))break c}f=Wa()|0;Sm(l);break b}while(0);f=k[b>>2]|0;Sm(l);break a}while(0);fb(f|0)}while(0);r=m;return f|0}function Dp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+64|0;f=m;o=m+56|0;p=m+44|0;h=m+20|0;l=m+16|0;j=m+12|0;n=m+8|0;g=m+4|0;i[o>>0]=i[58887]|0;i[o+1>>0]=i[58888]|0;i[o+2>>0]=i[58889]|0;i[o+3>>0]=i[58890]|0;i[o+4>>0]=i[58891]|0;i[o+5>>0]=i[58892]|0;Ep(o+1|0,58893,1,k[c+4>>2]|0);a=fp()|0;k[f>>2]=e;e=p+(av(p,12,a,o,f)|0)|0;o=Fp(p,e,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(1,p|0,o|0,e|0,h|0,l|0,j|0,n|0);e=x;x=0;if(e&1){p=Wa()|0;zm(a)|0;fb(p|0)}else{zm(a)|0;k[g>>2]=k[b>>2];o=k[l>>2]|0;p=k[j>>2]|0;k[f>>2]=k[g>>2];p=md(f,h,o,p,c,d)|0;r=m;return p|0}return 0}function Ep(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(d&2048){i[a>>0]=43;a=a+1|0}if(d&512){i[a>>0]=35;a=a+1|0}e=i[b>>0]|0;if(e<<24>>24){f=b;while(1){f=f+1|0;b=a+1|0;i[a>>0]=e;e=i[f>>0]|0;if(!(e<<24>>24)){a=b;break}else a=b}}a:do switch(d&74|0){case 64:{i[a>>0]=111;break}case 8:if(!(d&16384)){i[a>>0]=120;break a}else{i[a>>0]=88;break a}default:if(c){i[a>>0]=100;break a}else{i[a>>0]=117;break a}}while(0);return}function Fp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:do switch(k[c+4>>2]&176|0){case 16:{c=i[a>>0]|0;switch(c<<24>>24){case 43:case 45:{a=a+1|0;break a}default:{}}if((b-a|0)>1&c<<24>>24==48){switch(i[a+1>>0]|0){case 88:case 120:break;default:{d=7;break a}}a=a+2|0}else d=7;break}case 32:{a=b;break}default:d=7}while(0);return a|0}function Gp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;u=r;r=r+16|0;v=u;s=Ss(g,44220)|0;l=Ss(g,44360)|0;Mb[k[(k[l>>2]|0)+20>>2]&127](v,l);p=i[v>>0]|0;q=v+4|0;a:do if(!(((p&1)==0?(p&255)>>>1:k[q>>2]|0)|0)){x=0;Ea(k[(k[s>>2]|0)+32>>2]|0,s|0,a|0,c|0,d|0)|0;t=x;x=0;if(t&1)t=5;else{g=d+(c-a)|0;k[f>>2]=g;t=29}}else{k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{x=0;g=Aa(k[(k[s>>2]|0)+28>>2]|0,s|0,g|0)|0;p=x;x=0;if(p&1){t=5;break a}j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=g;j=a+1|0;break}default:j=a}b:do if((c-j|0)>1?(i[j>>0]|0)==48:0){g=j+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:break b}x=0;h=Aa(k[(k[s>>2]|0)+28>>2]|0,s|0,48)|0;p=x;x=0;if(p&1){t=5;break a}p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=h;x=0;g=Aa(k[(k[s>>2]|0)+28>>2]|0,s|0,i[g>>0]|0)|0;p=x;x=0;if(p&1){t=5;break a}p=k[f>>2]|0;k[f>>2]=p+1;i[p>>0]=g;j=j+2|0}while(0);if((j|0)!=(c|0)?(m=c+-1|0,j>>>0>>0):0){h=j;g=m;do{p=i[h>>0]|0;i[h>>0]=i[g>>0]|0;i[g>>0]=p;h=h+1|0;g=g+-1|0}while(h>>>0>>0)}x=0;m=ta(k[(k[l>>2]|0)+16>>2]|0,l|0)|0;p=x;x=0;if(!(p&1)){n=v+8|0;o=v+1|0;c:do if(j>>>0>>0){g=0;h=0;p=j;while(1){l=i[((i[v>>0]&1)==0?o:k[n>>2]|0)+h>>0]|0;if(l<<24>>24!=0&(g|0)==(l<<24>>24|0)){g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=m;g=i[v>>0]|0;l=0;h=(h>>>0<(((g&1)==0?(g&255)>>>1:k[q>>2]|0)+-1|0)>>>0&1)+h|0}else l=g;x=0;g=Aa(k[(k[s>>2]|0)+28>>2]|0,s|0,i[p>>0]|0)|0;w=x;x=0;if(w&1)break;w=k[f>>2]|0;k[f>>2]=w+1;i[w>>0]=g;p=p+1|0;if(p>>>0>=c>>>0)break c;else g=l+1|0}g=Wa()|0;break a}while(0);h=a;g=d+(j-h)|0;a=k[f>>2]|0;if((g|0)==(a|0)){a=h;t=29}else{a=a+-1|0;if(g>>>0>>0)do{w=i[g>>0]|0;i[g>>0]=i[a>>0]|0;i[a>>0]=w;g=g+1|0;a=a+-1|0}while(g>>>0>>0);a=h;g=k[f>>2]|0;t=29}}else t=5}while(0);if((t|0)==5)g=Wa()|0;else if((t|0)==29){k[e>>2]=(b|0)==(c|0)?g:d+(b-a)|0;Sm(v);r=u;return}Sm(v);fb(g|0)}function Hp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;m=r;r=r+96|0;g=m+8|0;a=m;o=m+74|0;i=m+32|0;l=m+28|0;j=m+24|0;n=m+20|0;h=m+16|0;p=a;k[p>>2]=37;k[p+4>>2]=0;Ep(a+1|0,58895,1,k[c+4>>2]|0);p=fp()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=o+(av(o,22,p,a,g)|0)|0;e=Fp(o,f,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(1,o|0,e|0,f|0,i|0,l|0,j|0,n|0);f=x;x=0;if(f&1){q=Wa()|0;zm(a)|0;fb(q|0)}else{zm(a)|0;k[h>>2]=k[b>>2];p=k[l>>2]|0;q=k[j>>2]|0;k[g>>2]=k[h>>2];q=md(g,i,p,q,c,d)|0;r=m;return q|0}return 0}function Ip(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+64|0;f=m;o=m+56|0;p=m+44|0;h=m+20|0;l=m+16|0;j=m+12|0;n=m+8|0;g=m+4|0;i[o>>0]=i[58887]|0;i[o+1>>0]=i[58888]|0;i[o+2>>0]=i[58889]|0;i[o+3>>0]=i[58890]|0;i[o+4>>0]=i[58891]|0;i[o+5>>0]=i[58892]|0;Ep(o+1|0,58893,0,k[c+4>>2]|0);a=fp()|0;k[f>>2]=e;e=p+(av(p,12,a,o,f)|0)|0;o=Fp(p,e,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(1,p|0,o|0,e|0,h|0,l|0,j|0,n|0);e=x;x=0;if(e&1){p=Wa()|0;zm(a)|0;fb(p|0)}else{zm(a)|0;k[g>>2]=k[b>>2];o=k[l>>2]|0;p=k[j>>2]|0;k[f>>2]=k[g>>2];p=md(f,h,o,p,c,d)|0;r=m;return p|0}return 0}function Jp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;m=r;r=r+112|0;g=m+8|0;a=m;o=m+75|0;i=m+32|0;l=m+28|0;j=m+24|0;n=m+20|0;h=m+16|0;p=a;k[p>>2]=37;k[p+4>>2]=0;Ep(a+1|0,58895,0,k[c+4>>2]|0);p=fp()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=o+(av(o,23,p,a,g)|0)|0;e=Fp(o,f,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(1,o|0,e|0,f|0,i|0,l|0,j|0,n|0);f=x;x=0;if(f&1){q=Wa()|0;zm(a)|0;fb(q|0)}else{zm(a)|0;k[h>>2]=k[b>>2];p=k[l>>2]|0;q=k[j>>2]|0;k[g>>2]=k[h>>2];q=md(g,i,p,q,c,d)|0;r=m;return q|0}return 0}function Kp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;z=r;r=r+176|0;t=z+84|0;n=z+48|0;m=z+32|0;i=z+24|0;f=z+8|0;l=z;q=z+88|0;s=z+80|0;h=z+118|0;y=z+76|0;w=z+72|0;u=z+68|0;v=z+64|0;j=l;k[j>>2]=37;k[j+4>>2]=0;j=Lp(l+1|0,58898,k[c+4>>2]|0)|0;k[s>>2]=q;a=fp()|0;if(j){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;f=av(q,30,a,l,f)|0}else{p[i>>3]=e;f=av(q,30,a,l,i)|0}a:do if((f|0)>29){x=0;a=Da(3)|0;f=x;x=0;f=f&1;if(j){if(!f?(x=0,k[m>>2]=k[c+8>>2],p[m+8>>3]=e,g=Ea(17,s|0,a|0,l|0,m|0)|0,o=x,x=0,!(o&1)):0)A=12}else if(!f?(x=0,k[n>>2]=k[c+8>>2],p[n+8>>3]=e,o=Ea(17,s|0,a|0,l|0,n|0)|0,n=x,x=0,!(n&1)):0){g=o;A=12}do if((A|0)==12){a=k[s>>2]|0;if(!a){x=0;Ga(6);o=x;x=0;if(o&1)break;f=k[s>>2]|0}else f=a;a=f;l=f;A=16;break a}while(0);a=Wa()|0}else{a=k[s>>2]|0;l=0;g=f;A=16}while(0);if((A|0)==16){i=a+g|0;j=Fp(a,i,c)|0;do if((a|0)==(q|0)){a=q;f=0;A=22}else{g=Pl(g<<1)|0;if(!g){x=0;Ga(6);A=x;x=0;if(A&1){f=0;A=20;break}a=k[s>>2]|0}f=g;h=g;A=22}while(0);do if((A|0)==22){x=0;g=ta(68,c|0)|0;s=x;x=0;if(!(s&1)){k[u>>2]=g;x=0;ya(2,a|0,j|0,i|0,h|0,y|0,w|0,u|0);u=x;x=0;if(u&1){a=Wa()|0;zm(g)|0;break}zm(g)|0;k[v>>2]=k[b>>2];A=k[y>>2]|0;a=k[w>>2]|0;x=0;k[t>>2]=k[v>>2];a=sa(39,t|0,h|0,A|0,a|0,c|0,d|0)|0;A=x;x=0;if(!(A&1)){k[b>>2]=a;if(f)Ql(f);if(l)Ql(l);r=z;return a|0}else A=20}else A=20}while(0);if((A|0)==20)a=Wa()|0;if(f)Ql(f);if(l)Ql(l)}fb(a|0);return 0}function Lp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if(c&2048){i[a>>0]=43;a=a+1|0}if(c&1024){i[a>>0]=35;a=a+1|0}g=c&260;e=c>>>14;h=(g|0)==260;if(h)f=0;else{i[a>>0]=46;i[a+1>>0]=42;a=a+2|0;f=1}c=i[b>>0]|0;if(c<<24>>24){d=a;while(1){b=b+1|0;a=d+1|0;i[d>>0]=c;c=i[b>>0]|0;if(!(c<<24>>24))break;else d=a}}a:do switch(g|0){case 4:if(!(e&1)){i[a>>0]=102;break a}else{i[a>>0]=70;break a}case 256:if(!(e&1)){i[a>>0]=101;break a}else{i[a>>0]=69;break a}default:{c=(e&1|0)!=0;if(h)if(c){i[a>>0]=65;break a}else{i[a>>0]=97;break a}else if(c){i[a>>0]=71;break a}else{i[a>>0]=103;break a}}}while(0);return f|0}function Mp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0;z=r;r=r+16|0;A=z;y=Ss(g,44220)|0;v=Ss(g,44360)|0;Mb[k[(k[v>>2]|0)+20>>2]&127](A,v);k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{x=0;g=Aa(k[(k[y>>2]|0)+28>>2]|0,y|0,g|0)|0;w=x;x=0;if(w&1)u=8;else{m=k[f>>2]|0;k[f>>2]=m+1;i[m>>0]=g;m=a+1|0;u=10}break}default:{m=a;u=10}}a:do if((u|0)==10){w=c;b:do if((w-m|0)>1?(i[m>>0]|0)==48:0){j=m+1|0;switch(i[j>>0]|0){case 88:case 120:break;default:{u=11;break b}}x=0;g=Aa(k[(k[y>>2]|0)+28>>2]|0,y|0,48)|0;t=x;x=0;if(t&1){u=8;break a}t=k[f>>2]|0;k[f>>2]=t+1;i[t>>0]=g;m=m+2|0;x=0;g=Aa(k[(k[y>>2]|0)+28>>2]|0,y|0,i[j>>0]|0)|0;t=x;x=0;if(t&1){u=8;break a}t=k[f>>2]|0;k[f>>2]=t+1;i[t>>0]=g;if(m>>>0>>0){g=m;while(1){j=i[g>>0]|0;x=0;l=Da(3)|0;t=x;x=0;if(t&1)break;x=0;j=Aa(39,j<<24>>24|0,l|0)|0;t=x;x=0;if(t&1)break;if(!j){t=m;break b}g=g+1|0;if(g>>>0>=c>>>0){t=m;break b}}g=Wa()|0;break a}else{t=m;g=m}}else u=11;while(0);c:do if((u|0)==11)if(m>>>0>>0){g=m;while(1){j=i[g>>0]|0;x=0;l=Da(3)|0;t=x;x=0;if(t&1)break;x=0;j=Aa(40,j<<24>>24|0,l|0)|0;t=x;x=0;if(t&1)break;if(!j){t=m;break c}g=g+1|0;if(g>>>0>=c>>>0){t=m;break c}}g=Wa()|0;break a}else{t=m;g=m}while(0);q=i[A>>0]|0;s=A+4|0;if(((q&1)==0?(q&255)>>>1:k[s>>2]|0)|0){if((t|0)!=(g|0)?(n=g+-1|0,t>>>0>>0):0){l=t;j=n;do{q=i[l>>0]|0;i[l>>0]=i[j>>0]|0;i[j>>0]=q;l=l+1|0;j=j+-1|0}while(l>>>0>>0)}x=0;n=ta(k[(k[v>>2]|0)+16>>2]|0,v|0)|0;q=x;x=0;if(q&1){u=8;break}o=A+8|0;p=A+1|0;d:do if(t>>>0>>0){j=0;l=0;q=t;while(1){m=i[((i[A>>0]&1)==0?p:k[o>>2]|0)+l>>0]|0;if(m<<24>>24>0&(j|0)==(m<<24>>24|0)){j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=n;j=i[A>>0]|0;m=0;l=(l>>>0<(((j&1)==0?(j&255)>>>1:k[s>>2]|0)+-1|0)>>>0&1)+l|0}else m=j;x=0;j=Aa(k[(k[y>>2]|0)+28>>2]|0,y|0,i[q>>0]|0)|0;B=x;x=0;if(B&1)break;B=k[f>>2]|0;k[f>>2]=B+1;i[B>>0]=j;q=q+1|0;if(q>>>0>=g>>>0)break d;else j=m+1|0}g=Wa()|0;break a}while(0);j=d+(t-a)|0;l=k[f>>2]|0;if((j|0)!=(l|0)?(h=l+-1|0,j>>>0>>0):0){do{B=i[j>>0]|0;i[j>>0]=i[h>>0]|0;i[h>>0]=B;j=j+1|0;h=h+-1|0}while(j>>>0>>0);j=y}else j=y}else{x=0;Ea(k[(k[y>>2]|0)+32>>2]|0,y|0,t|0,g|0,k[f>>2]|0)|0;B=x;x=0;if(B&1){u=8;break}k[f>>2]=(k[f>>2]|0)+(g-t);j=y}e:do if(g>>>0>>0){while(1){h=i[g>>0]|0;if(h<<24>>24==46)break;x=0;h=Aa(k[(k[j>>2]|0)+28>>2]|0,y|0,h|0)|0;B=x;x=0;if(B&1){u=4;break}B=k[f>>2]|0;k[f>>2]=B+1;i[B>>0]=h;g=g+1|0;if(g>>>0>=c>>>0)break e}if((u|0)==4){g=Wa()|0;break a}x=0;h=ta(k[(k[v>>2]|0)+12>>2]|0,v|0)|0;B=x;x=0;if(B&1){u=8;break a}B=k[f>>2]|0;k[f>>2]=B+1;i[B>>0]=h;g=g+1|0}while(0);x=0;Ea(k[(k[y>>2]|0)+32>>2]|0,y|0,g|0,c|0,k[f>>2]|0)|0;B=x;x=0;if(B&1)u=8;else{B=(k[f>>2]|0)+(w-g)|0;k[f>>2]=B;k[e>>2]=(b|0)==(c|0)?B:d+(b-a)|0;Sm(A);r=z;return}}while(0);if((u|0)==8)g=Wa()|0;Sm(A);fb(g|0)}function Np(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;z=r;r=r+176|0;t=z+76|0;n=z+48|0;m=z+32|0;i=z+24|0;f=z+8|0;l=z;q=z+80|0;s=z+72|0;h=z+110|0;y=z+68|0;w=z+64|0;u=z+60|0;v=z+56|0;j=l;k[j>>2]=37;k[j+4>>2]=0;j=Lp(l+1|0,58899,k[c+4>>2]|0)|0;k[s>>2]=q;a=fp()|0;if(j){k[f>>2]=k[c+8>>2];p[f+8>>3]=e;f=av(q,30,a,l,f)|0}else{p[i>>3]=e;f=av(q,30,a,l,i)|0}a:do if((f|0)>29){x=0;a=Da(3)|0;f=x;x=0;f=f&1;if(j){if(!f?(x=0,k[m>>2]=k[c+8>>2],p[m+8>>3]=e,g=Ea(17,s|0,a|0,l|0,m|0)|0,o=x,x=0,!(o&1)):0)A=12}else if(!f?(x=0,p[n>>3]=e,o=Ea(17,s|0,a|0,l|0,n|0)|0,n=x,x=0,!(n&1)):0){g=o;A=12}do if((A|0)==12){a=k[s>>2]|0;if(!a){x=0;Ga(6);o=x;x=0;if(o&1)break;f=k[s>>2]|0}else f=a;a=f;l=f;A=16;break a}while(0);a=Wa()|0}else{a=k[s>>2]|0;l=0;g=f;A=16}while(0);if((A|0)==16){i=a+g|0;j=Fp(a,i,c)|0;do if((a|0)==(q|0)){a=q;f=0;A=22}else{g=Pl(g<<1)|0;if(!g){x=0;Ga(6);A=x;x=0;if(A&1){f=0;A=20;break}a=k[s>>2]|0}f=g;h=g;A=22}while(0);do if((A|0)==22){x=0;g=ta(68,c|0)|0;s=x;x=0;if(!(s&1)){k[u>>2]=g;x=0;ya(2,a|0,j|0,i|0,h|0,y|0,w|0,u|0);u=x;x=0;if(u&1){a=Wa()|0;zm(g)|0;break}zm(g)|0;k[v>>2]=k[b>>2];A=k[y>>2]|0;a=k[w>>2]|0;x=0;k[t>>2]=k[v>>2];a=sa(39,t|0,h|0,A|0,a|0,c|0,d|0)|0;A=x;x=0;if(!(A&1)){k[b>>2]=a;if(f)Ql(f);if(l)Ql(l);r=z;return a|0}else A=20}else A=20}while(0);if((A|0)==20)a=Wa()|0;if(f)Ql(f);if(l)Ql(l)}fb(a|0);return 0}function Op(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+80|0;j=o;a=o+70|0;m=o+12|0;n=o+32|0;h=o+8|0;l=o+4|0;i[a>>0]=i[58901]|0;i[a+1>>0]=i[58902]|0;i[a+2>>0]=i[58903]|0;i[a+3>>0]=i[58904]|0;i[a+4>>0]=i[58905]|0;i[a+5>>0]=i[58906]|0;f=fp()|0;k[j>>2]=e;a=av(m,20,f,a,j)|0;e=m+a|0;f=Fp(m,e,c)|0;g=tn(c)|0;k[h>>2]=g;x=0;h=Aa(37,h|0,44220)|0;p=x;x=0;if(p&1){p=Wa()|0;zm(g)|0;fb(p|0)}else{zm(g)|0;Zb[k[(k[h>>2]|0)+32>>2]&31](h,m,e,n)|0;p=n+a|0;k[l>>2]=k[b>>2];k[j>>2]=k[l>>2];p=md(j,n,(f|0)==(e|0)?p:n+(f-m)|0,p,c,d)|0;r=o;return p|0}return 0}function Pp(a){a=a|0;return}function Qp(a){a=a|0;mj(a);return}function Rp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;f=l+20|0;g=l+16|0;h=l+12|0;j=l;a:do if(!(k[c+4>>2]&1)){j=k[(k[a>>2]|0)+24>>2]|0;k[g>>2]=k[b>>2];k[f>>2]=k[g>>2];f=Wb[j&31](a,f,c,d,e&1)|0}else{f=tn(c)|0;k[h>>2]=f;x=0;g=Aa(37,h|0,44368)|0;h=x;x=0;b:do if(h&1){l=Wa()|0;zm(f)|0;f=l}else{zm(f)|0;f=k[g>>2]|0;if(e)Mb[k[f+24>>2]&127](j,g);else Mb[k[f+28>>2]&127](j,g);a=i[j>>0]|0;c=(a&1)==0;f=j+4|0;e=j+8|0;h=c?f:j+4|0;f=c?f:k[j+8>>2]|0;c=(a&1)==0;c:do if((f|0)!=((c?h:k[e>>2]|0)+((c?(a&255)>>>1:k[h>>2]|0)<<2)|0)){while(1){g=k[f>>2]|0;d=k[b>>2]|0;if(d){c=d+24|0;a=k[c>>2]|0;if((a|0)==(k[d+28>>2]|0)){x=0;g=Aa(k[(k[d>>2]|0)+52>>2]|0,d|0,g|0)|0;a=x;x=0;if(a&1)break}else{k[c>>2]=a+4;k[a>>2]=g}if((g|0)==-1)k[b>>2]=0}f=f+4|0;a=i[j>>0]|0;c=(a&1)==0;if((f|0)==((c?h:k[e>>2]|0)+((c?(a&255)>>>1:k[h>>2]|0)<<2)|0))break c}f=Wa()|0;en(j);break b}while(0);f=k[b>>2]|0;en(j);break a}while(0);fb(f|0)}while(0);r=l;return f|0}function Sp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;m=r;r=r+128|0;f=m;o=m+116|0;p=m+104|0;h=m+20|0;l=m+16|0;j=m+12|0;n=m+8|0;g=m+4|0;i[o>>0]=i[58887]|0;i[o+1>>0]=i[58888]|0;i[o+2>>0]=i[58889]|0;i[o+3>>0]=i[58890]|0;i[o+4>>0]=i[58891]|0;i[o+5>>0]=i[58892]|0;Ep(o+1|0,58893,1,k[c+4>>2]|0);a=fp()|0;k[f>>2]=e;e=p+(av(p,12,a,o,f)|0)|0;o=Fp(p,e,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(3,p|0,o|0,e|0,h|0,l|0,j|0,n|0);e=x;x=0;if(e&1){p=Wa()|0;zm(a)|0;fb(p|0)}else{zm(a)|0;k[g>>2]=k[b>>2];o=k[l>>2]|0;p=k[j>>2]|0;k[f>>2]=k[g>>2];p=cv(f,h,o,p,c,d)|0;r=m;return p|0}return 0}function Tp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;u=r;r=r+16|0;v=u;s=Ss(g,44212)|0;l=Ss(g,44368)|0;Mb[k[(k[l>>2]|0)+20>>2]&127](v,l);p=i[v>>0]|0;q=v+4|0;a:do if(!(((p&1)==0?(p&255)>>>1:k[q>>2]|0)|0)){x=0;Ea(k[(k[s>>2]|0)+48>>2]|0,s|0,a|0,c|0,d|0)|0;t=x;x=0;if(t&1)t=5;else{g=d+(c-a<<2)|0;k[f>>2]=g;t=28}}else{k[f>>2]=d;g=i[a>>0]|0;switch(g<<24>>24){case 43:case 45:{x=0;g=Aa(k[(k[s>>2]|0)+44>>2]|0,s|0,g|0)|0;p=x;x=0;if(p&1){t=5;break a}j=k[f>>2]|0;k[f>>2]=j+4;k[j>>2]=g;j=a+1|0;break}default:j=a}b:do if((c-j|0)>1?(i[j>>0]|0)==48:0){g=j+1|0;switch(i[g>>0]|0){case 88:case 120:break;default:{p=j;break b}}x=0;h=Aa(k[(k[s>>2]|0)+44>>2]|0,s|0,48)|0;p=x;x=0;if(p&1){t=5;break a}p=k[f>>2]|0;k[f>>2]=p+4;k[p>>2]=h;x=0;g=Aa(k[(k[s>>2]|0)+44>>2]|0,s|0,i[g>>0]|0)|0;p=x;x=0;if(p&1){t=5;break a}p=k[f>>2]|0;k[f>>2]=p+4;k[p>>2]=g;p=j+2|0}else p=j;while(0);if((p|0)!=(c|0)?(m=c+-1|0,p>>>0>>0):0){h=p;g=m;do{o=i[h>>0]|0;i[h>>0]=i[g>>0]|0;i[g>>0]=o;h=h+1|0;g=g+-1|0}while(h>>>0>>0)}x=0;l=ta(k[(k[l>>2]|0)+16>>2]|0,l|0)|0;o=x;x=0;if(!(o&1)){m=v+8|0;n=v+1|0;c:do if(p>>>0>>0){g=0;h=0;o=p;while(1){j=i[((i[v>>0]&1)==0?n:k[m>>2]|0)+h>>0]|0;if(j<<24>>24!=0&(g|0)==(j<<24>>24|0)){g=k[f>>2]|0;k[f>>2]=g+4;k[g>>2]=l;g=i[v>>0]|0;j=0;h=(h>>>0<(((g&1)==0?(g&255)>>>1:k[q>>2]|0)+-1|0)>>>0&1)+h|0}else j=g;x=0;g=Aa(k[(k[s>>2]|0)+44>>2]|0,s|0,i[o>>0]|0)|0;w=x;x=0;if(w&1)break;w=k[f>>2]|0;k[f>>2]=w+4;k[w>>2]=g;o=o+1|0;if(o>>>0>=c>>>0)break c;else g=j+1|0}g=Wa()|0;break a}while(0);j=a;g=d+(p-j<<2)|0;h=k[f>>2]|0;if((g|0)!=(h|0)){a=h+-4|0;if(g>>>0>>0){do{w=k[g>>2]|0;k[g>>2]=k[a>>2];k[a>>2]=w;g=g+4|0;a=a+-4|0}while(g>>>0>>0);a=j;g=h;t=28}else{a=j;g=h;t=28}}else{a=j;t=28}}else t=5}while(0);if((t|0)==5)g=Wa()|0;else if((t|0)==28){k[e>>2]=(b|0)==(c|0)?g:d+(b-a<<2)|0;Sm(v);r=u;return}Sm(v);fb(g|0)}function Up(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;m=r;r=r+224|0;g=m+8|0;a=m;o=m+196|0;i=m+32|0;l=m+28|0;j=m+24|0;n=m+20|0;h=m+16|0;p=a;k[p>>2]=37;k[p+4>>2]=0;Ep(a+1|0,58895,1,k[c+4>>2]|0);p=fp()|0;q=g;k[q>>2]=e;k[q+4>>2]=f;f=o+(av(o,22,p,a,g)|0)|0;e=Fp(o,f,c)|0;a=tn(c)|0;k[n>>2]=a;x=0;ya(3,o|0,e|0,f|0,i|0,l|0,j|0,n|0);f=x;x=0;if(f&1){q=Wa()|0;zm(a)|0;fb(q|0)}else{zm(a)|0;k[h>>2]=k[b>>2];p=k[l>>2]|0;q=k[j>>2]|0;k[g>>2]=k[h>>2];q=cv(g,i,p,q,c,d)|0;r=m;return q|0}return 0}\nfunction Et(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+16|0;q=t;o=t+8|0;a:do if((c|0)==(d|0))j=d;else{j=c;while(1){if(!(k[j>>2]|0))break a;j=j+4|0;if((j|0)==(d|0)){j=d;break}}}while(0);k[h>>2]=f;k[e>>2]=c;m=g;p=a+8|0;b:do if(!((f|0)==(g|0)|(c|0)==(d|0))){a=f;l=j;c:while(1){v=b;f=k[v+4>>2]|0;j=q;k[j>>2]=k[v>>2];k[j+4>>2]=f;j=Ak(k[p>>2]|0)|0;x=0;f=Ba(21,a|0,e|0,l-c>>2|0,m-a|0,b|0)|0;v=x;x=0;if(v&1){u=9;break}if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){u=8;break}switch(f|0){case 0:{n=1;break b}case -1:{j=a;u=14;break c}default:{}}j=(k[h>>2]|0)+f|0;k[h>>2]=j;if((j|0)==(g|0)){u=27;break}if((l|0)==(d|0)){c=k[e>>2]|0;a=j;j=d}else{j=Ak(k[p>>2]|0)|0;x=0;c=va(34,o|0,0,b|0)|0;v=x;x=0;if(v&1){u=35;break}if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){u=34;break}if((c|0)==-1){n=2;break b}if(c>>>0>(m-(k[h>>2]|0)|0)>>>0){n=1;break b}if(c){j=o;while(1){l=i[j>>0]|0;v=k[h>>2]|0;k[h>>2]=v+1;i[v>>0]=l;c=c+-1|0;if(!c)break;else j=j+1|0}}c=(k[e>>2]|0)+4|0;k[e>>2]=c;d:do if((c|0)==(d|0))j=d;else{j=c;while(1){if(!(k[j>>2]|0))break d;j=j+4|0;if((j|0)==(d|0)){j=d;break}}}while(0);a=k[h>>2]|0}if((a|0)==(g|0)|(c|0)==(d|0)){u=47;break b}else l=j}if((u|0)==8){v=Wa(0)|0;oc(v)}else if((u|0)==9){c=Wa()|0;if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}else if((u|0)==14){k[h>>2]=j;e:do if((c|0)!=(k[e>>2]|0)){while(1){v=k[c>>2]|0;a=Ak(k[p>>2]|0)|0;x=0;j=va(34,j|0,v|0,q|0)|0;v=x;x=0;if(v&1){s=a;break}if((a|0)!=0?(x=0,ta(75,a|0)|0,v=x,x=0,v&1):0){u=18;break}if((j|0)==-1)break e;j=(k[h>>2]|0)+j|0;k[h>>2]=j;c=c+4|0;if((c|0)==(k[e>>2]|0))break e}if((u|0)==18){v=Wa(0)|0;oc(v)}c=Wa()|0;if((s|0)!=0?(x=0,ta(75,s|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}while(0);k[e>>2]=c;n=2;break}else if((u|0)==27){c=k[e>>2]|0;u=47;break}else if((u|0)==34){v=Wa(0)|0;oc(v)}else if((u|0)==35){c=Wa()|0;if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}}else u=47;while(0);if((u|0)==47)n=(c|0)!=(d|0)&1;r=t;return n|0}function Ft(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+16|0;s=t;a:do if((c|0)==(d|0))j=d;else{j=c;while(1){if(!(i[j>>0]|0))break a;j=j+1|0;if((j|0)==(d|0)){j=d;break}}}while(0);k[h>>2]=f;k[e>>2]=c;n=g;p=a+8|0;b:do if(!((f|0)==(g|0)|(c|0)==(d|0))){a=f;m=j;c:while(1){l=b;j=k[l+4>>2]|0;f=s;k[f>>2]=k[l>>2];k[f+4>>2]=j;f=m;j=Ak(k[p>>2]|0)|0;x=0;l=Ba(22,a|0,e|0,f-c|0,n-a>>2|0,b|0)|0;v=x;x=0;if(v&1){u=9;break}if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){u=8;break}switch(l|0){case 0:{o=2;break b}case -1:{j=a;u=14;break c}default:{}}a=(k[h>>2]|0)+(l<<2)|0;k[h>>2]=a;if((a|0)==(g|0)){u=31;break}c=k[e>>2]|0;if((m|0)==(d|0))j=d;else{j=Ak(k[p>>2]|0)|0;x=0;c=Ea(20,a|0,c|0,1,b|0)|0;v=x;x=0;if(v&1){u=38;break}if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){u=37;break}if(c){o=2;break b}k[h>>2]=(k[h>>2]|0)+4;c=(k[e>>2]|0)+1|0;k[e>>2]=c;d:do if((c|0)==(d|0))j=d;else{j=c;while(1){if(!(i[j>>0]|0))break d;j=j+1|0;if((j|0)==(d|0)){j=d;break}}}while(0);a=k[h>>2]|0}if((a|0)==(g|0)|(c|0)==(d|0)){u=47;break b}else m=j}if((u|0)==8){v=Wa(0)|0;oc(v)}else if((u|0)==9){c=Wa()|0;if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}else if((u|0)==14){k[h>>2]=j;e:do if((c|0)!=(k[e>>2]|0)){a=j;f:while(1){j=Ak(k[p>>2]|0)|0;x=0;a=Ea(20,a|0,c|0,f-c|0,s|0)|0;v=x;x=0;if(v&1){u=19;break}if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){u=18;break}switch(a|0){case -1:{u=25;break f}case -2:{u=26;break f}case 0:{c=c+1|0;break}default:c=c+a|0}a=(k[h>>2]|0)+4|0;k[h>>2]=a;if((c|0)==(k[e>>2]|0)){q=c;break e}}if((u|0)==18){v=Wa(0)|0;oc(v)}else if((u|0)==19){c=Wa()|0;if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}else if((u|0)==25){k[e>>2]=c;o=2;break b}else if((u|0)==26){k[e>>2]=c;o=1;break b}}else q=c;while(0);k[e>>2]=q;o=(q|0)!=(d|0)&1;break}else if((u|0)==31){c=k[e>>2]|0;u=47;break}else if((u|0)==37){v=Wa(0)|0;oc(v)}else if((u|0)==38){c=Wa()|0;if((j|0)!=0?(x=0,ta(75,j|0)|0,v=x,x=0,v&1):0){v=Wa(0)|0;oc(v)}fb(c|0)}}else u=47;while(0);if((u|0)==47)o=(c|0)!=(d|0)&1;r=t;return o|0}function Gt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=r;r=r+16|0;f=g;k[e>>2]=c;c=Ak(k[a+8>>2]|0)|0;x=0;a=va(34,f|0,0,b|0)|0;b=x;x=0;if(b&1){f=Wa()|0;if((c|0)!=0?(x=0,ta(75,c|0)|0,g=x,x=0,g&1):0){g=Wa(0)|0;oc(g)}fb(f|0)}if((c|0)!=0?(x=0,ta(75,c|0)|0,b=x,x=0,b&1):0){b=Wa(0)|0;oc(b)}switch(a|0){case 0:case -1:{f=2;break}default:{a=a+-1|0;if(a>>>0<=(d-(k[e>>2]|0)|0)>>>0)if(!a)f=0;else while(1){b=i[f>>0]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=b;a=a+-1|0;if(!a){f=0;break}else f=f+1|0}else f=1}}r=g;return f|0}function Ht(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+8|0;x=0;c=ta(75,k[b>>2]|0)|0;d=x;x=0;do if(d&1)e=16;else{x=0;d=va(35,0,0,4)|0;a=x;x=0;if(a&1){a=Wa(0)|0;if(!c)break;x=0;ta(75,c|0)|0;g=x;x=0;if(!(g&1))break;g=Wa(0)|0;oc(g)}if((c|0)!=0?(x=0,ta(75,c|0)|0,g=x,x=0,g&1):0){g=Wa(0)|0;oc(g)}if(!d){a=k[b>>2]|0;if(a){x=0;a=ta(75,a|0)|0;g=x;x=0;if(g&1){e=16;break}if((a|0)!=0?(x=0,ta(75,a|0)|0,g=x,x=0,g&1):0){g=Wa(0)|0;oc(g)}else f=0}else f=1}else f=-1;return f|0}while(0);if((e|0)==16)a=Wa(0)|0;oc(a);return 0}function It(a){a=a|0;return 0}function Jt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;j=d;i=a+8|0;a:do if((c|0)==(d|0)|(e|0)==0)a=0;else{a=0;h=0;while(1){g=Ak(k[i>>2]|0)|0;x=0;f=va(36,c|0,j-c|0,b|0)|0;n=x;x=0;if(n&1){m=g;break}if((g|0)!=0?(x=0,ta(75,g|0)|0,n=x,x=0,n&1):0){l=5;break}switch(f|0){case -2:case -1:break a;case 0:{c=c+1|0;f=1;break}default:c=c+f|0}a=f+a|0;h=h+1|0;if((c|0)==(d|0)|h>>>0>=e>>>0)break a}if((l|0)==5){n=Wa(0)|0;oc(n)}a=Wa()|0;if((m|0)!=0?(x=0,ta(75,m|0)|0,n=x,x=0,n&1):0){n=Wa(0)|0;oc(n)}fb(a|0)}while(0);return a|0}function Kt(a){a=a|0;var b=0,c=0;a=k[a+8>>2]|0;if(a){x=0;a=ta(75,a|0)|0;c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)}if((a|0)!=0?(x=0,ta(75,a|0)|0,c=x,x=0,c&1):0){c=Wa(0)|0;oc(c)}else b=4}else b=1;return b|0}function Lt(a){a=a|0;mj(a);return}function Mt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;a=r;r=r+16|0;i=a+4|0;b=a;k[i>>2]=c;k[b>>2]=f;g=Rv(c,d,i,f,g,b,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[b>>2];r=a;return g|0}function Nt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;a=r;r=r+16|0;i=a+4|0;b=a;k[i>>2]=c;k[b>>2]=f;g=Sv(c,d,i,f,g,b,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[b>>2];r=a;return g|0}function Ot(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function Pt(a){a=a|0;return 0}function Qt(a){a=a|0;return 0}function Rt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Tv(c,d,e,1114111,0)|0}function St(a){a=a|0;return 4}function Tt(a){a=a|0;mj(a);return}function Ut(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;a=r;r=r+16|0;i=a+4|0;b=a;k[i>>2]=c;k[b>>2]=f;g=Uv(c,d,i,f,g,b,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[b>>2];r=a;return g|0}function Vt(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;a=r;r=r+16|0;i=a+4|0;b=a;k[i>>2]=c;k[b>>2]=f;g=Vv(c,d,i,f,g,b,1114111,0)|0;k[e>>2]=k[i>>2];k[h>>2]=k[b>>2];r=a;return g|0}function Wt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;k[e>>2]=c;return 3}function Xt(a){a=a|0;return 0}function Yt(a){a=a|0;return 0}function Zt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Wv(c,d,e,1114111,0)|0}function _t(a){a=a|0;return 4}function $t(a){a=a|0;mj(a);return}function au(a){a=a|0;mj(a);return}function bu(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=44384;i[a+8>>0]=46;i[a+9>>0]=44;a=a+12|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function cu(a,b){a=a|0;b=b|0;k[a+4>>2]=b+-1;k[a>>2]=44424;k[a+8>>2]=46;k[a+12>>2]=44;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function du(a){a=a|0;k[a>>2]=44384;Sm(a+12|0);return}function eu(a){a=a|0;du(a);mj(a);return}function fu(a){a=a|0;k[a>>2]=44424;Sm(a+16|0);return}function gu(a){a=a|0;fu(a);mj(a);return}function hu(a){a=a|0;return i[a+8>>0]|0}function iu(a){a=a|0;return k[a+8>>2]|0}function ju(a){a=a|0;return i[a+9>>0]|0}function ku(a){a=a|0;return k[a+12>>2]|0}function lu(a,b){a=a|0;b=b|0;Pm(a,b+12|0);return}function mu(a,b){a=a|0;b=b|0;Pm(a,b+16|0);return}function nu(a,b){a=a|0;b=b|0;Qm(a,59024,4);return}function ou(a,b){a=a|0;b=b|0;cn(a,44996,zl(44996)|0);return}function pu(a,b){a=a|0;b=b|0;Qm(a,59029,5);return}function qu(a,b){a=a|0;b=b|0;cn(a,45016,zl(45016)|0);return}function ru(a){a=a|0;switch(k[a+4>>2]&74|0){case 64:{a=8;break}case 8:{a=16;break}case 0:{a=0;break}default:a=10}return a|0}function su(a){a=a|0;do if((i[2464]|0)==0?(Qa(2464)|0)!=0:0){if((i[2472]|0)==0?(Qa(2472)|0)!=0:0){a=45040;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=45208);tb(193,0,w|0)|0;Ya(2472)}x=0;Aa(41,45040,59035)|0;a=x;x=0;if(((((((((((((!(a&1)?(x=0,Aa(41,45052,59042)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45064,59049)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45076,59057)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45088,59067)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45100,59076)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45112,59083)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45124,59092)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45136,59096)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45148,59100)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45160,59104)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45172,59108)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45184,59112)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45196,59116)|0,a=x,x=0,!(a&1)):0){k[11302]=45040;Ya(2464);break}a=Wa()|0;Bb(2464);fb(a|0)}while(0);return k[11302]|0}function tu(a){a=a|0;do if((i[2480]|0)==0?(Qa(2480)|0)!=0:0){if((i[2488]|0)==0?(Qa(2488)|0)!=0:0){a=45212;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=45380);tb(194,0,w|0)|0;Ya(2488)}x=0;Aa(42,45212,45380)|0;a=x;x=0;if(((((((((((((!(a&1)?(x=0,Aa(42,45224,45408)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45236,45436)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45248,45468)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45260,45508)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45272,45544)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45284,45572)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45296,45608)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45308,45624)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45320,45640)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45332,45656)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45344,45672)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45356,45688)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,45368,45704)|0,a=x,x=0,!(a&1)):0){k[11430]=45212;Ya(2480);break}a=Wa()|0;Bb(2480);fb(a|0)}while(0);return k[11430]|0}function uu(a){a=a|0;a:do if((i[2496]|0)==0?(Qa(2496)|0)!=0:0){if((i[2504]|0)==0?(Qa(2504)|0)!=0:0){a=45724;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=46012);tb(195,0,w|0)|0;Ya(2504)}x=0;Aa(41,45724,59120)|0;a=x;x=0;do if((((((((((((((!(a&1)?(x=0,Aa(41,45736,59128)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45748,59137)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45760,59143)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45772,59149)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45784,59153)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45796,59158)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45808,59163)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45820,59170)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45832,59180)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45844,59188)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45856,59197)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45868,59206)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45880,59210)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(41,45892,59214)|0,a=x,x=0,!(a&1)):0){x=0;Aa(41,45904,59218)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45916,59149)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45928,59222)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45940,59226)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45952,59230)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45964,59234)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45976,59238)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,45988,59242)|0;a=x;x=0;if(a&1)break;x=0;Aa(41,46e3,59246)|0;a=x;x=0;if(a&1)break;k[11503]=45724;Ya(2496);break a}while(0);a=Wa()|0;Bb(2496);fb(a|0)}while(0);return k[11503]|0}function vu(a){a=a|0;a:do if((i[2512]|0)==0?(Qa(2512)|0)!=0:0){if((i[2520]|0)==0?(Qa(2520)|0)!=0:0){a=46016;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=46304);tb(196,0,w|0)|0;Ya(2520)}x=0;Aa(42,46016,46304)|0;a=x;x=0;do if((((((((((((((!(a&1)?(x=0,Aa(42,46028,46336)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46040,46372)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46052,46396)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46064,46420)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46076,46436)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46088,46456)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46100,46476)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46112,46504)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46124,46544)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46136,46576)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46148,46612)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46160,46648)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46172,46664)|0,a=x,x=0,!(a&1)):0)?(x=0,Aa(42,46184,46680)|0,a=x,x=0,!(a&1)):0){x=0;Aa(42,46196,46696)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46208,46420)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46220,46712)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46232,46728)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46244,46744)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46256,46760)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46268,46776)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46280,46792)|0;a=x;x=0;if(a&1)break;x=0;Aa(42,46292,46808)|0;a=x;x=0;if(a&1)break;k[11706]=46016;Ya(2512);break a}while(0);a=Wa()|0;Bb(2512);fb(a|0)}while(0);return k[11706]|0}function wu(a){a=a|0;do if((i[2528]|0)==0?(Qa(2528)|0)!=0:0){if((i[2536]|0)==0?(Qa(2536)|0)!=0:0){a=46828;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=47116);tb(197,0,w|0)|0;Ya(2536)}x=0;Aa(41,46828,59250)|0;a=x;x=0;if(!(a&1)?(x=0,Aa(41,46840,59253)|0,a=x,x=0,!(a&1)):0){k[11779]=46828;Ya(2528);break}a=Wa()|0;Bb(2528);fb(a|0)}while(0);return k[11779]|0}function xu(a){a=a|0;do if((i[2544]|0)==0?(Qa(2544)|0)!=0:0){if((i[2552]|0)==0?(Qa(2552)|0)!=0:0){a=47120;do{k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+12|0}while((a|0)!=47408);tb(198,0,w|0)|0;Ya(2552)}x=0;Aa(42,47120,47408)|0;a=x;x=0;if(!(a&1)?(x=0,Aa(42,47132,47420)|0,a=x,x=0,!(a&1)):0){k[11858]=47120;Ya(2544);break}a=Wa()|0;Bb(2544);fb(a|0)}while(0);return k[11858]|0}function yu(a){a=a|0;do if((i[2560]|0)==0?(Qa(2560)|0)!=0:0){x=0;Fa(5,47436,59256,8);a=x;x=0;if(a&1){a=Wa()|0;Bb(2560);fb(a|0)}else{tb(199,47436,w|0)|0;Ya(2560);break}}while(0);return 47436}function zu(a){a=a|0;var b=0;do if((i[2568]|0)==0?(Qa(2568)|0)!=0:0){x=0;a=ta(76,47448)|0;b=x;x=0;if(!(b&1)?(x=0,Fa(15,47484,47448,a|0),b=x,x=0,!(b&1)):0){tb(200,47484,w|0)|0;Ya(2568);break}b=Wa()|0;Bb(2568);fb(b|0)}while(0);return 47484}function Au(a){a=a|0;do if((i[2576]|0)==0?(Qa(2576)|0)!=0:0){x=0;Fa(5,47496,59265,8);a=x;x=0;if(a&1){a=Wa()|0;Bb(2576);fb(a|0)}else{tb(199,47496,w|0)|0;Ya(2576);break}}while(0);return 47496}function Bu(a){a=a|0;var b=0;do if((i[2584]|0)==0?(Qa(2584)|0)!=0:0){x=0;a=ta(76,47508)|0;b=x;x=0;if(!(b&1)?(x=0,Fa(15,47544,47508,a|0),b=x,x=0,!(b&1)):0){tb(200,47544,w|0)|0;Ya(2584);break}b=Wa()|0;Bb(2584);fb(b|0)}while(0);return 47544}function Cu(a){a=a|0;do if((i[2592]|0)==0?(Qa(2592)|0)!=0:0){x=0;Fa(5,47556,59274,20);a=x;x=0;if(a&1){a=Wa()|0;Bb(2592);fb(a|0)}else{tb(199,47556,w|0)|0;Ya(2592);break}}while(0);return 47556}function Du(a){a=a|0;var b=0;do if((i[2600]|0)==0?(Qa(2600)|0)!=0:0){x=0;a=ta(76,47568)|0;b=x;x=0;if(!(b&1)?(x=0,Fa(15,47652,47568,a|0),b=x,x=0,!(b&1)):0){tb(200,47652,w|0)|0;Ya(2600);break}b=Wa()|0;Bb(2600);fb(b|0)}while(0);return 47652}function Eu(a){a=a|0;do if((i[2608]|0)==0?(Qa(2608)|0)!=0:0){x=0;Fa(5,47664,59295,11);a=x;x=0;if(a&1){a=Wa()|0;Bb(2608);fb(a|0)}else{tb(199,47664,w|0)|0;Ya(2608);break}}while(0);return 47664}function Fu(a){a=a|0;var b=0;do if((i[2616]|0)==0?(Qa(2616)|0)!=0:0){x=0;a=ta(76,47676)|0;b=x;x=0;if(!(b&1)?(x=0,Fa(15,47724,47676,a|0),b=x,x=0,!(b&1)):0){tb(200,47724,w|0)|0;Ya(2616);break}b=Wa()|0;Bb(2616);fb(b|0)}while(0);return 47724}function Gu(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=44304;a=a+8|0;b=k[a>>2]|0;x=0;c=Da(3)|0;d=x;x=0;do if(!(d&1)){if((b|0)!=(c|0)?(x=0,qa(188,k[a>>2]|0),d=x,x=0,d&1):0)break;return}while(0);d=Wa(0)|0;oc(d)}function Hu(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0;z=r;r=r+112|0;j=z;n=(d-c|0)/12|0;do if(n>>>0>100){j=Pl(n)|0;if((j|0)==0?(x=0,Ga(6),y=x,x=0,y&1):0){h=0;q=6;break}h=j;q=11}else{h=0;q=11}while(0);a:do if((q|0)==11){if((c|0)==(d|0))m=0;else{q=c;o=0;p=j;while(1){m=i[q>>0]|0;if(!(m&1))m=(m&255)>>>1;else m=k[q+4>>2]|0;if(!m){i[p>>0]=2;m=o+1|0;n=n+-1|0}else{i[p>>0]=1;m=o}q=q+12|0;if((q|0)==(d|0))break;else{o=m;p=p+1|0}}}w=(c|0)==(d|0);y=(c|0)==(d|0);v=0;s=m;b:while(1){m=k[a>>2]|0;do if(m){if((k[m+12>>2]|0)==(k[m+16>>2]|0)){x=0;m=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;u=x;x=0;if(u&1){q=5;break b}if((m|0)==-1){k[a>>2]=0;m=0;break}else{m=k[a>>2]|0;break}}}else m=0;while(0);q=(m|0)==0;o=k[b>>2]|0;if(o){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;m=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;u=x;x=0;if(u&1){q=5;break}if((m|0)==-1){k[b>>2]=0;o=0}}}else o=0;p=(o|0)==0;m=k[a>>2]|0;if(!((n|0)!=0&(q^p))){q=64;break}o=k[m+12>>2]|0;if((o|0)==(k[m+16>>2]|0)){x=0;m=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;u=x;x=0;if(u&1){q=5;break}}else m=l[o>>0]|0;m=m&255;if(!g){x=0;m=Aa(k[(k[e>>2]|0)+12>>2]|0,e|0,m|0)|0;u=x;x=0;if(u&1){q=5;break}}u=v+1|0;if(w){m=0;q=s}else{p=0;t=c;q=s;s=j;while(1){do if((i[s>>0]|0)==1){if(!(i[t>>0]&1))o=t+1|0;else o=k[t+8>>2]|0;o=i[o+v>>0]|0;if(!g){x=0;o=Aa(k[(k[e>>2]|0)+12>>2]|0,e|0,o|0)|0;A=x;x=0;if(A&1){q=4;break b}}if(m<<24>>24!=o<<24>>24){i[s>>0]=0;o=p;n=n+-1|0;break}o=i[t>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=k[t+4>>2]|0;if((o|0)==(u|0)){i[s>>0]=2;o=1;q=q+1|0;n=n+-1|0}else o=1}else o=p;while(0);t=t+12|0;if((t|0)==(d|0)){m=o;break}else{p=o;s=s+1|0}}}if(!m){v=u;s=q;continue}m=k[a>>2]|0;o=m+12|0;p=k[o>>2]|0;if((p|0)==(k[m+16>>2]|0)){x=0;ta(k[(k[m>>2]|0)+40>>2]|0,m|0)|0;A=x;x=0;if(A&1){q=5;break}}else k[o>>2]=p+1;if((q+n|0)>>>0<2|y){v=u;s=q;continue}else{m=c;p=q;q=j}while(1){if((i[q>>0]|0)==2){o=i[m>>0]|0;if(!(o&1))o=(o&255)>>>1;else o=k[m+4>>2]|0;if((o|0)!=(u|0)){i[q>>0]=0;p=p+-1|0}}m=m+12|0;if((m|0)==(d|0)){v=u;s=p;continue b}else q=q+1|0}}if((q|0)==4){c=Wa()|0;break}else if((q|0)==5){c=Wa()|0;break}else if((q|0)==64){do if(m){if((k[m+12>>2]|0)==(k[m+16>>2]|0)){x=0;m=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;A=x;x=0;if(A&1){q=6;break a}if((m|0)==-1){k[a>>2]=0;m=0;break}else{m=k[a>>2]|0;break}}}else m=0;while(0);n=(m|0)==0;do if(!p){if((k[o+12>>2]|0)==(k[o+16>>2]|0)){x=0;m=ta(k[(k[o>>2]|0)+36>>2]|0,o|0)|0;A=x;x=0;if(A&1){q=6;break a}if((m|0)==-1){k[b>>2]=0;q=76;break}}if(!n)q=77}else q=76;while(0);if((q|0)==76?n:0)q=77;if((q|0)==77)k[f>>2]=k[f>>2]|2;c:do if((c|0)==(d|0))q=81;else while(1){if((i[j>>0]|0)==2)break c;c=c+12|0;if((c|0)==(d|0)){q=81;break}else j=j+1|0}while(0);if((q|0)==81){k[f>>2]=k[f>>2]|4;c=d}if(h)Ql(h);r=z;return c|0}}while(0);if((q|0)==6)c=Wa()|0;if(h)Ql(h);fb(c|0);return 0}function Iu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+240|0;s=A+202|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;up(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){D=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;h=(a|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(h)break;else break b;x=0;j=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;m=x;x=0;if(m&1){D=24;break b}if((j|0)!=-1)if(h)break;else break b;else{k[c>>2]=0;D=16;break}}else D=16;while(0);if((D|0)==16){D=0;if(h){g=0;break}else g=0}h=i[B>>0]|0;h=(h&1)==0?(h&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(d+h|0)){x=0;Fa(8,B|0,h<<1|0,0);m=x;x=0;if(m&1){D=24;break}if(!(i[B>>0]&1))d=10;else d=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,d|0,0);m=x;x=0;if(m&1){D=24;break}d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d+h}j=a+12|0;h=k[j>>2]|0;m=a+16|0;if((h|0)==(k[m>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}}else h=l[h>>0]|0;if(ep(h&255,t,d,u,v,n,C,y,z,s)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}else continue}else{k[j>>2]=g+1;continue}}if((D|0)==24){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;d=Ea(21,d|0,k[u>>2]|0,e|0,t|0)|0;E=x;x=0;if(!(E&1)){k[f>>2]=d;cs(C,y,k[z>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;E=x;x=0;if(E&1){D=25;break a}if((a|0)==-1){k[c>>2]=0;D=49;break}}if(!d)D=50}else D=49;while(0);if((D|0)==49?d:0)D=50;if((D|0)==50)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=25}else D=25;while(0);if((D|0)==25)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Ju(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+240|0;s=A+202|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;up(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){D=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;g=(a|0)==0;h=k[c>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(g)break;else break b;x=0;j=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;m=x;x=0;if(m&1){D=24;break b}if((j|0)!=-1)if(g)break;else break b;else{k[c>>2]=0;D=16;break}}else D=16;while(0);if((D|0)==16){D=0;if(g){h=0;break}else h=0}g=i[B>>0]|0;g=(g&1)==0?(g&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(d+g|0)){x=0;Fa(8,B|0,g<<1|0,0);m=x;x=0;if(m&1){D=24;break}if(!(i[B>>0]&1))d=10;else d=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,d|0,0);m=x;x=0;if(m&1){D=24;break}d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d+g}j=a+12|0;g=k[j>>2]|0;m=a+16|0;if((g|0)==(k[m>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}}else g=l[g>>0]|0;if(ep(g&255,t,d,u,v,n,C,y,z,s)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}else continue}else{k[j>>2]=g+1;continue}}if((D|0)==24){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;d=Ea(22,d|0,k[u>>2]|0,e|0,t|0)|0;g=M;E=x;x=0;if(!(E&1)){E=f;k[E>>2]=d;k[E+4>>2]=g;cs(C,y,k[z>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;E=x;x=0;if(E&1){D=25;break a}if((a|0)==-1){k[c>>2]=0;D=49;break}}if(!d)D=50}else D=49;while(0);if((D|0)==49?d:0)D=50;if((D|0)==50)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=25}else D=25;while(0);if((D|0)==25)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Ku(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;B=r;r=r+240|0;t=B+202|0;g=B+200|0;D=B+24|0;C=B+12|0;v=B+8|0;z=B+40|0;A=B+4|0;w=B;u=ru(d)|0;up(D,d,t,g);k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;if(!(i[C>>0]&1))a=10;else a=(k[C>>2]&-2)+-1|0;x=0;Fa(8,C|0,a|0,0);s=x;x=0;a:do if(!(s&1)){p=C+8|0;q=C+1|0;d=(i[C>>0]&1)==0?q:k[p>>2]|0;k[v>>2]=d;k[A>>2]=z;k[w>>2]=0;s=C+4|0;o=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;n=x;x=0;if(n&1){E=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;h=(a|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(h)break;else break b;x=0;m=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;n=x;x=0;if(n&1){E=24;break b}if((m|0)!=-1)if(h)break;else break b;else{k[c>>2]=0;E=16;break}}else E=16;while(0);if((E|0)==16){E=0;if(h){g=0;break}else g=0}h=i[C>>0]|0;h=(h&1)==0?(h&255)>>>1:k[s>>2]|0;if((k[v>>2]|0)==(d+h|0)){x=0;Fa(8,C|0,h<<1|0,0);n=x;x=0;if(n&1){E=24;break}if(!(i[C>>0]&1))d=10;else d=(k[C>>2]&-2)+-1|0;x=0;Fa(8,C|0,d|0,0);n=x;x=0;if(n&1){E=24;break}d=(i[C>>0]&1)==0?q:k[p>>2]|0;k[v>>2]=d+h}m=a+12|0;h=k[m>>2]|0;n=a+16|0;if((h|0)==(k[n>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;F=x;x=0;if(F&1){E=24;break}}else h=l[h>>0]|0;if(ep(h&255,u,d,v,w,o,D,z,A,t)|0)break;g=k[m>>2]|0;if((g|0)==(k[n>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;F=x;x=0;if(F&1){E=24;break}else continue}else{k[m>>2]=g+1;continue}}if((E|0)==24){a=Wa()|0;break}F=i[D>>0]|0;if((((F&1)==0?(F&255)>>>1:k[D+4>>2]|0)|0)!=0?(y=k[A>>2]|0,(y-z|0)<160):0){F=k[w>>2]|0;k[A>>2]=y+4;k[y>>2]=F}x=0;d=Ea(23,d|0,k[v>>2]|0,e|0,u|0)|0;F=x;x=0;if(!(F&1)){j[f>>1]=d;cs(D,z,k[A>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;F=x;x=0;if(F&1){E=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;F=x;x=0;if(F&1){E=25;break a}if((a|0)==-1){k[c>>2]=0;E=49;break}}if(!d)E=50}else E=49;while(0);if((E|0)==49?d:0)E=50;if((E|0)==50)k[e>>2]=k[e>>2]|2;F=k[b>>2]|0;Sm(C);Sm(D);r=B;return F|0}else E=25}else E=25;while(0);if((E|0)==25)a=Wa()|0;Sm(C);Sm(D);fb(a|0);return 0}function Lu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+240|0;s=A+202|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;up(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){D=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;h=(a|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(h)break;else break b;x=0;j=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;m=x;x=0;if(m&1){D=24;break b}if((j|0)!=-1)if(h)break;else break b;else{k[c>>2]=0;D=16;break}}else D=16;while(0);if((D|0)==16){D=0;if(h){g=0;break}else g=0}h=i[B>>0]|0;h=(h&1)==0?(h&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(d+h|0)){x=0;Fa(8,B|0,h<<1|0,0);m=x;x=0;if(m&1){D=24;break}if(!(i[B>>0]&1))d=10;else d=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,d|0,0);m=x;x=0;if(m&1){D=24;break}d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d+h}j=a+12|0;h=k[j>>2]|0;m=a+16|0;if((h|0)==(k[m>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}}else h=l[h>>0]|0;if(ep(h&255,t,d,u,v,n,C,y,z,s)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}else continue}else{k[j>>2]=g+1;continue}}if((D|0)==24){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;d=Ea(24,d|0,k[u>>2]|0,e|0,t|0)|0;E=x;x=0;if(!(E&1)){k[f>>2]=d;cs(C,y,k[z>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;E=x;x=0;if(E&1){D=25;break a}if((a|0)==-1){k[c>>2]=0;D=49;break}}if(!d)D=50}else D=49;while(0);if((D|0)==49?d:0)D=50;if((D|0)==50)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=25}else D=25;while(0);if((D|0)==25)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Mu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+240|0;s=A+202|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;up(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){D=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;h=(a|0)==0;g=k[c>>2]|0;do if(g){if((k[g+12>>2]|0)!=(k[g+16>>2]|0))if(h)break;else break b;x=0;j=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;m=x;x=0;if(m&1){D=24;break b}if((j|0)!=-1)if(h)break;else break b;else{k[c>>2]=0;D=16;break}}else D=16;while(0);if((D|0)==16){D=0;if(h){g=0;break}else g=0}h=i[B>>0]|0;h=(h&1)==0?(h&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(d+h|0)){x=0;Fa(8,B|0,h<<1|0,0);m=x;x=0;if(m&1){D=24;break}if(!(i[B>>0]&1))d=10;else d=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,d|0,0);m=x;x=0;if(m&1){D=24;break}d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d+h}j=a+12|0;h=k[j>>2]|0;m=a+16|0;if((h|0)==(k[m>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}}else h=l[h>>0]|0;if(ep(h&255,t,d,u,v,n,C,y,z,s)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}else continue}else{k[j>>2]=g+1;continue}}if((D|0)==24){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;d=Ea(25,d|0,k[u>>2]|0,e|0,t|0)|0;E=x;x=0;if(!(E&1)){k[f>>2]=d;cs(C,y,k[z>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;E=x;x=0;if(E&1){D=25;break a}if((a|0)==-1){k[c>>2]=0;D=49;break}}if(!d)D=50}else D=49;while(0);if((D|0)==49?d:0)D=50;if((D|0)==50)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=25}else D=25;while(0);if((D|0)==25)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Nu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+240|0;s=A+202|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;up(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=i[g>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;m=x;x=0;if(m&1){D=24;break}if((g|0)==-1){k[b>>2]=0;a=0}}}else a=0;g=(a|0)==0;h=k[c>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(g)break;else break b;x=0;j=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;m=x;x=0;if(m&1){D=24;break b}if((j|0)!=-1)if(g)break;else break b;else{k[c>>2]=0;D=16;break}}else D=16;while(0);if((D|0)==16){D=0;if(g){h=0;break}else h=0}g=i[B>>0]|0;g=(g&1)==0?(g&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(d+g|0)){x=0;Fa(8,B|0,g<<1|0,0);m=x;x=0;if(m&1){D=24;break}if(!(i[B>>0]&1))d=10;else d=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,d|0,0);m=x;x=0;if(m&1){D=24;break}d=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=d+g}j=a+12|0;g=k[j>>2]|0;m=a+16|0;if((g|0)==(k[m>>2]|0)){x=0;g=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}}else g=l[g>>0]|0;if(ep(g&255,t,d,u,v,n,C,y,z,s)|0)break;g=k[j>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=24;break}else continue}else{k[j>>2]=g+1;continue}}if((D|0)==24){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;d=Ea(26,d|0,k[u>>2]|0,e|0,t|0)|0;g=M;E=x;x=0;if(!(E&1)){E=f;k[E>>2]=d;k[E+4>>2]=g;cs(C,y,k[z>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;E=x;x=0;if(E&1){D=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;E=x;x=0;if(E&1){D=25;break a}if((a|0)==-1){k[c>>2]=0;D=49;break}}if(!d)D=50}else D=49;while(0);if((D|0)==49?d:0)D=50;if((D|0)==50)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=25}else D=25;while(0);if((D|0)==25)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Ou(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;E=r;r=r+240|0;v=E+208|0;h=E+203|0;j=E+202|0;G=E+24|0;F=E+12|0;y=E+8|0;C=E+40|0;D=E+4|0;z=E;A=E+201|0;w=E+200|0;vp(G,d,v,h,j);k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;if(!(i[F>>0]&1))a=10;else a=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,a|0,0);u=x;x=0;a:do if(!(u&1)){s=F+8|0;t=F+1|0;d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d;k[D>>2]=C;k[z>>2]=0;i[A>>0]=1;i[w>>0]=69;u=F+4|0;q=i[h>>0]|0;p=i[j>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;n=x;x=0;if(n&1){H=24;break}if((h|0)==-1){k[b>>2]=0;a=0}}}else a=0;j=(a|0)==0;h=k[c>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(j)break;else break b;x=0;m=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;n=x;x=0;if(n&1){H=24;break b}if((m|0)!=-1)if(j)break;else break b;else{k[c>>2]=0;H=16;break}}else H=16;while(0);if((H|0)==16){H=0;if(j){h=0;break}else h=0}j=i[F>>0]|0;j=(j&1)==0?(j&255)>>>1:k[u>>2]|0;if((k[y>>2]|0)==(d+j|0)){x=0;Fa(8,F|0,j<<1|0,0);n=x;x=0;if(n&1){H=24;break}if(!(i[F>>0]&1))d=10;else d=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,d|0,0);n=x;x=0;if(n&1){H=24;break}d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d+j}m=a+12|0;j=k[m>>2]|0;n=a+16|0;if((j|0)==(k[n>>2]|0)){x=0;j=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}}else j=l[j>>0]|0;if(wp(j&255,A,w,d,y,q,p,G,C,D,z,v)|0)break;h=k[m>>2]|0;if((h|0)==(k[n>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}else continue}else{k[m>>2]=h+1;continue}}if((H|0)==24){a=Wa()|0;break}I=i[G>>0]|0;if(!((i[A>>0]|0)==0?1:(((I&1)==0?(I&255)>>>1:k[G+4>>2]|0)|0)==0)?(B=k[D>>2]|0,(B-C|0)<160):0){I=k[z>>2]|0;k[D>>2]=B+4;k[B>>2]=I}x=0;g=+Ca(1,d|0,k[y>>2]|0,e|0);I=x;x=0;if(!(I&1)){o[f>>2]=g;cs(G,C,k[D>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;I=x;x=0;if(I&1){H=25;break a}if((a|0)==-1){k[c>>2]=0;H=49;break}}if(!d)H=50}else H=49;while(0);if((H|0)==49?d:0)H=50;if((H|0)==50)k[e>>2]=k[e>>2]|2;I=k[b>>2]|0;Sm(F);Sm(G);r=E;return I|0}else H=25}else H=25;while(0);if((H|0)==25)a=Wa()|0;Sm(F);Sm(G);fb(a|0);return 0}function Pu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;E=r;r=r+240|0;v=E+208|0;h=E+203|0;j=E+202|0;G=E+24|0;F=E+12|0;y=E+8|0;C=E+40|0;D=E+4|0;z=E;A=E+201|0;w=E+200|0;vp(G,d,v,h,j);k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;if(!(i[F>>0]&1))a=10;else a=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,a|0,0);u=x;x=0;a:do if(!(u&1)){s=F+8|0;t=F+1|0;d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d;k[D>>2]=C;k[z>>2]=0;i[A>>0]=1;i[w>>0]=69;u=F+4|0;q=i[h>>0]|0;o=i[j>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;n=x;x=0;if(n&1){H=24;break}if((h|0)==-1){k[b>>2]=0;a=0}}}else a=0;j=(a|0)==0;h=k[c>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(j)break;else break b;x=0;m=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;n=x;x=0;if(n&1){H=24;break b}if((m|0)!=-1)if(j)break;else break b;else{k[c>>2]=0;H=16;break}}else H=16;while(0);if((H|0)==16){H=0;if(j){h=0;break}else h=0}j=i[F>>0]|0;j=(j&1)==0?(j&255)>>>1:k[u>>2]|0;if((k[y>>2]|0)==(d+j|0)){x=0;Fa(8,F|0,j<<1|0,0);n=x;x=0;if(n&1){H=24;break}if(!(i[F>>0]&1))d=10;else d=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,d|0,0);n=x;x=0;if(n&1){H=24;break}d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d+j}m=a+12|0;j=k[m>>2]|0;n=a+16|0;if((j|0)==(k[n>>2]|0)){x=0;j=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}}else j=l[j>>0]|0;if(wp(j&255,A,w,d,y,q,o,G,C,D,z,v)|0)break;h=k[m>>2]|0;if((h|0)==(k[n>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}else continue}else{k[m>>2]=h+1;continue}}if((H|0)==24){a=Wa()|0;break}I=i[G>>0]|0;if(!((i[A>>0]|0)==0?1:(((I&1)==0?(I&255)>>>1:k[G+4>>2]|0)|0)==0)?(B=k[D>>2]|0,(B-C|0)<160):0){I=k[z>>2]|0;k[D>>2]=B+4;k[B>>2]=I}x=0;g=+Ca(2,d|0,k[y>>2]|0,e|0);I=x;x=0;if(!(I&1)){p[f>>3]=g;cs(G,C,k[D>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;I=x;x=0;if(I&1){H=25;break a}if((a|0)==-1){k[c>>2]=0;H=49;break}}if(!d)H=50}else H=49;while(0);if((H|0)==49?d:0)H=50;if((H|0)==50)k[e>>2]=k[e>>2]|2;I=k[b>>2]|0;Sm(F);Sm(G);r=E;return I|0}else H=25}else H=25;while(0);if((H|0)==25)a=Wa()|0;Sm(F);Sm(G);fb(a|0);return 0}function Qu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;E=r;r=r+240|0;v=E+208|0;h=E+203|0;j=E+202|0;G=E+24|0;F=E+12|0;y=E+8|0;C=E+40|0;D=E+4|0;z=E;A=E+201|0;w=E+200|0;vp(G,d,v,h,j);k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;if(!(i[F>>0]&1))a=10;else a=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,a|0,0);u=x;x=0;a:do if(!(u&1)){s=F+8|0;t=F+1|0;d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d;k[D>>2]=C;k[z>>2]=0;i[A>>0]=1;i[w>>0]=69;u=F+4|0;q=i[h>>0]|0;o=i[j>>0]|0;a=k[b>>2]|0;b:while(1){if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;h=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;n=x;x=0;if(n&1){H=24;break}if((h|0)==-1){k[b>>2]=0;a=0}}}else a=0;j=(a|0)==0;h=k[c>>2]|0;do if(h){if((k[h+12>>2]|0)!=(k[h+16>>2]|0))if(j)break;else break b;x=0;m=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;n=x;x=0;if(n&1){H=24;break b}if((m|0)!=-1)if(j)break;else break b;else{k[c>>2]=0;H=16;break}}else H=16;while(0);if((H|0)==16){H=0;if(j){h=0;break}else h=0}j=i[F>>0]|0;j=(j&1)==0?(j&255)>>>1:k[u>>2]|0;if((k[y>>2]|0)==(d+j|0)){x=0;Fa(8,F|0,j<<1|0,0);n=x;x=0;if(n&1){H=24;break}if(!(i[F>>0]&1))d=10;else d=(k[F>>2]&-2)+-1|0;x=0;Fa(8,F|0,d|0,0);n=x;x=0;if(n&1){H=24;break}d=(i[F>>0]&1)==0?t:k[s>>2]|0;k[y>>2]=d+j}m=a+12|0;j=k[m>>2]|0;n=a+16|0;if((j|0)==(k[n>>2]|0)){x=0;j=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}}else j=l[j>>0]|0;if(wp(j&255,A,w,d,y,q,o,G,C,D,z,v)|0)break;h=k[m>>2]|0;if((h|0)==(k[n>>2]|0)){x=0;ta(k[(k[a>>2]|0)+40>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=24;break}else continue}else{k[m>>2]=h+1;continue}}if((H|0)==24){a=Wa()|0;break}I=i[G>>0]|0;if(!((i[A>>0]|0)==0?1:(((I&1)==0?(I&255)>>>1:k[G+4>>2]|0)|0)==0)?(B=k[D>>2]|0,(B-C|0)<160):0){I=k[z>>2]|0;k[D>>2]=B+4;k[B>>2]=I}x=0;g=+Ca(3,d|0,k[y>>2]|0,e|0);I=x;x=0;if(!(I&1)){p[f>>3]=g;cs(G,C,k[D>>2]|0,e);if(a){if((k[a+12>>2]|0)==(k[a+16>>2]|0)){x=0;d=ta(k[(k[a>>2]|0)+36>>2]|0,a|0)|0;I=x;x=0;if(I&1){H=25;break}if((d|0)==-1){k[b>>2]=0;a=0}}}else a=0;d=(a|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;I=x;x=0;if(I&1){H=25;break a}if((a|0)==-1){k[c>>2]=0;H=49;break}}if(!d)H=50}else H=49;while(0);if((H|0)==49?d:0)H=50;if((H|0)==50)k[e>>2]=k[e>>2]|2;I=k[b>>2]|0;Sm(F);Sm(G);r=E;return I|0}else H=25}else H=25;while(0);if((H|0)==25)a=Wa()|0;Sm(F);Sm(G);fb(a|0);return 0}function Ru(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=Ak(b)|0;b=pl(a,c,f)|0;if((d|0)!=0?(x=0,ta(75,d|0)|0,f=x,x=0,f&1):0){f=Wa(0)|0;oc(f)}r=e;return b|0}function Su(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0;y=r;r=r+112|0;j=y;m=(d-c|0)/12|0;do if(m>>>0>100){j=Pl(m)|0;if((j|0)==0?(x=0,Ga(6),w=x,x=0,w&1):0){h=0;o=6;break}h=j;o=11}else{h=0;o=11}while(0);a:do if((o|0)==11){if((c|0)==(d|0))l=0;else{p=c;n=0;o=j;while(1){l=i[p>>0]|0;if(!(l&1))l=(l&255)>>>1;else l=k[p+4>>2]|0;if(!l){i[o>>0]=2;l=n+1|0;m=m+-1|0}else{i[o>>0]=1;l=n}p=p+12|0;if((p|0)==(d|0))break;else{n=l;o=o+1|0}}}v=(c|0)==(d|0);w=(c|0)==(d|0);u=0;q=m;b:while(1){m=k[a>>2]|0;do if(m){n=k[m+12>>2]|0;if((n|0)==(k[m+16>>2]|0)){x=0;m=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;t=x;x=0;if(t&1){o=5;break b}}else m=k[n>>2]|0;if((m|0)==-1){k[a>>2]=0;p=1;break}else{p=(k[a>>2]|0)==0;break}}else p=1;while(0);n=k[b>>2]|0;if(n){m=k[n+12>>2]|0;if((m|0)==(k[n+16>>2]|0)){x=0;m=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;t=x;x=0;if(t&1){o=5;break}}else m=k[m>>2]|0;if((m|0)==-1){k[b>>2]=0;n=0;o=1}else o=0}else{n=0;o=1}m=k[a>>2]|0;if(!((q|0)!=0&(p^o))){o=66;break}n=k[m+12>>2]|0;if((n|0)==(k[m+16>>2]|0)){x=0;m=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;t=x;x=0;if(t&1){o=5;break}}else m=k[n>>2]|0;if(!g){x=0;m=Aa(k[(k[e>>2]|0)+28>>2]|0,e|0,m|0)|0;t=x;x=0;if(t&1){o=5;break}}t=u+1|0;if(v){m=0;p=q}else{p=0;s=c;o=q;q=j;while(1){do if((i[q>>0]|0)==1){if(!(i[s>>0]&1))n=s+4|0;else n=k[s+8>>2]|0;n=k[n+(u<<2)>>2]|0;if(!g){x=0;n=Aa(k[(k[e>>2]|0)+28>>2]|0,e|0,n|0)|0;z=x;x=0;if(z&1){o=4;break b}}if((m|0)!=(n|0)){i[q>>0]=0;n=p;o=o+-1|0;break}n=i[s>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=k[s+4>>2]|0;if((n|0)==(t|0)){i[q>>0]=2;n=1;l=l+1|0;o=o+-1|0}else n=1}else n=p;while(0);s=s+12|0;if((s|0)==(d|0)){m=n;p=o;break}else{p=n;q=q+1|0}}}if(!m){u=t;q=p;continue}m=k[a>>2]|0;n=m+12|0;o=k[n>>2]|0;if((o|0)==(k[m+16>>2]|0)){x=0;ta(k[(k[m>>2]|0)+40>>2]|0,m|0)|0;z=x;x=0;if(z&1){o=5;break}}else k[n>>2]=o+4;if((l+p|0)>>>0<2|w){u=t;q=p;continue}else{m=c;o=j}while(1){if((i[o>>0]|0)==2){n=i[m>>0]|0;if(!(n&1))n=(n&255)>>>1;else n=k[m+4>>2]|0;if((n|0)!=(t|0)){i[o>>0]=0;l=l+-1|0}}m=m+12|0;if((m|0)==(d|0)){u=t;q=p;continue b}else o=o+1|0}}if((o|0)==4){c=Wa()|0;break}else if((o|0)==5){c=Wa()|0;break}else if((o|0)==66){do if(m){l=k[m+12>>2]|0;if((l|0)==(k[m+16>>2]|0)){x=0;l=ta(k[(k[m>>2]|0)+36>>2]|0,m|0)|0;z=x;x=0;if(z&1){o=6;break a}}else l=k[l>>2]|0;if((l|0)==-1){k[a>>2]=0;m=1;break}else{m=(k[a>>2]|0)==0;break}}else m=1;while(0);do if(n){l=k[n+12>>2]|0;if((l|0)==(k[n+16>>2]|0)){x=0;l=ta(k[(k[n>>2]|0)+36>>2]|0,n|0)|0;z=x;x=0;if(z&1){o=6;break a}}else l=k[l>>2]|0;if((l|0)!=-1)if(m)break;else{o=81;break}else{k[b>>2]=0;o=79;break}}else o=79;while(0);if((o|0)==79?m:0)o=81;if((o|0)==81)k[f>>2]=k[f>>2]|2;c:do if((c|0)==(d|0))o=85;else while(1){if((i[j>>0]|0)==2)break c;c=c+12|0;if((c|0)==(d|0)){o=85;break}else j=j+1|0}while(0);if((o|0)==85){k[f>>2]=k[f>>2]|4;c=d}if(h)Ql(h);r=y;return c|0}}while(0);if((o|0)==6)c=Wa()|0;if(h)Ql(h);fb(c|0);return 0}function Tu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;z=r;r=r+320|0;q=z+208|0;g=z+200|0;B=z+24|0;A=z+12|0;t=z+8|0;w=z+40|0;y=z+4|0;u=z;s=ru(d)|0;xp(B,d,q,g);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);p=x;x=0;a:do if(!(p&1)){n=A+8|0;o=A+1|0;a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a;k[y>>2]=w;k[u>>2]=0;p=A+4|0;m=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){C=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;d=0;h=1}else{d=g;h=0}}else{d=0;h=1}j=k[c>>2]|0;do if(j){g=k[j+12>>2]|0;if((g|0)==(k[j+16>>2]|0)){x=0;g=ta(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;l=x;x=0;if(l&1){C=25;break b}}else g=k[g>>2]|0;if((g|0)!=-1)if(h)break;else{g=j;break b}else{k[c>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(h){g=0;break}else j=0}g=i[A>>0]|0;g=(g&1)==0?(g&255)>>>1:k[p>>2]|0;if((k[t>>2]|0)==(a+g|0)){x=0;Fa(8,A|0,g<<1|0,0);l=x;x=0;if(l&1){C=25;break}if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);l=x;x=0;if(l&1){C=25;break}a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a+g}h=d+12|0;g=k[h>>2]|0;l=d+16|0;if((g|0)==(k[l>>2]|0)){x=0;g=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}}else g=k[g>>2]|0;if(tp(g,s,a,t,u,m,B,w,y,q)|0){g=j;break}g=k[h>>2]|0;if((g|0)==(k[l>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}else{g=d;continue}}else{k[h>>2]=g+4;g=d;continue}}if((C|0)==25){a=Wa()|0;break}D=i[B>>0]|0;if((((D&1)==0?(D&255)>>>1:k[B+4>>2]|0)|0)!=0?(v=k[y>>2]|0,(v-w|0)<160):0){D=k[u>>2]|0;k[y>>2]=v+4;k[v>>2]=D}x=0;a=Ea(21,a|0,k[t>>2]|0,e|0,s|0)|0;D=x;x=0;if(!(D&1)){k[f>>2]=a;cs(B,w,k[y>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{C=53;break}else{k[c>>2]=0;C=51;break}}else C=51;while(0);if((C|0)==51?d:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;Sm(A);Sm(B);r=z;return D|0}else C=26}else C=26;while(0);if((C|0)==26)a=Wa()|0;Sm(A);Sm(B);fb(a|0);return 0}function Uu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;z=r;r=r+320|0;q=z+208|0;g=z+200|0;B=z+24|0;A=z+12|0;t=z+8|0;w=z+40|0;y=z+4|0;u=z;s=ru(d)|0;xp(B,d,q,g);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);p=x;x=0;a:do if(!(p&1)){n=A+8|0;o=A+1|0;a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a;k[y>>2]=w;k[u>>2]=0;p=A+4|0;m=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){C=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;g=0;j=1}else j=0}else{g=0;j=1}h=k[c>>2]|0;do if(h){d=k[h+12>>2]|0;if((d|0)==(k[h+16>>2]|0)){x=0;d=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;l=x;x=0;if(l&1){C=25;break b}}else d=k[d>>2]|0;if((d|0)!=-1)if(j)break;else break b;else{k[c>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(j){h=0;break}else h=0}d=i[A>>0]|0;d=(d&1)==0?(d&255)>>>1:k[p>>2]|0;if((k[t>>2]|0)==(a+d|0)){x=0;Fa(8,A|0,d<<1|0,0);l=x;x=0;if(l&1){C=25;break}if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);l=x;x=0;if(l&1){C=25;break}a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a+d}j=g+12|0;d=k[j>>2]|0;l=g+16|0;if((d|0)==(k[l>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=25;break}}else d=k[d>>2]|0;if(tp(d,s,a,t,u,m,B,w,y,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){x=0;ta(k[(k[g>>2]|0)+40>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=25;break}else continue}else{k[j>>2]=d+4;continue}}if((C|0)==25){a=Wa()|0;break}D=i[B>>0]|0;if((((D&1)==0?(D&255)>>>1:k[B+4>>2]|0)|0)!=0?(v=k[y>>2]|0,(v-w|0)<160):0){D=k[u>>2]|0;k[y>>2]=v+4;k[v>>2]=D}x=0;a=Ea(22,a|0,k[t>>2]|0,e|0,s|0)|0;d=M;D=x;x=0;if(!(D&1)){D=f;k[D>>2]=a;k[D+4>>2]=d;cs(B,w,k[y>>2]|0,e);if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;D=x;x=0;if(D&1){C=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{C=53;break}else{k[c>>2]=0;C=51;break}}else C=51;while(0);if((C|0)==51?d:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;Sm(A);Sm(B);r=z;return D|0}else C=26}else C=26;while(0);if((C|0)==26)a=Wa()|0;Sm(A);Sm(B);fb(a|0);return 0}function Vu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=r;r=r+320|0;s=A+208|0;g=A+200|0;C=A+24|0;B=A+12|0;u=A+8|0;y=A+40|0;z=A+4|0;v=A;t=ru(d)|0;xp(C,d,s,g);k[B>>2]=0;k[B+4>>2]=0;k[B+8>>2]=0;if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);q=x;x=0;a:do if(!(q&1)){o=B+8|0;p=B+1|0;a=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=a;k[z>>2]=y;k[v>>2]=0;q=B+4|0;n=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;m=x;x=0;if(m&1){D=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;d=0;h=1}else{d=g;h=0}}else{d=0;h=1}l=k[c>>2]|0;do if(l){g=k[l+12>>2]|0;if((g|0)==(k[l+16>>2]|0)){x=0;g=ta(k[(k[l>>2]|0)+36>>2]|0,l|0)|0;m=x;x=0;if(m&1){D=25;break b}}else g=k[g>>2]|0;if((g|0)!=-1)if(h)break;else{g=l;break b}else{k[c>>2]=0;D=17;break}}else D=17;while(0);if((D|0)==17){D=0;if(h){g=0;break}else l=0}g=i[B>>0]|0;g=(g&1)==0?(g&255)>>>1:k[q>>2]|0;if((k[u>>2]|0)==(a+g|0)){x=0;Fa(8,B|0,g<<1|0,0);m=x;x=0;if(m&1){D=25;break}if(!(i[B>>0]&1))a=10;else a=(k[B>>2]&-2)+-1|0;x=0;Fa(8,B|0,a|0,0);m=x;x=0;if(m&1){D=25;break}a=(i[B>>0]&1)==0?p:k[o>>2]|0;k[u>>2]=a+g}h=d+12|0;g=k[h>>2]|0;m=d+16|0;if((g|0)==(k[m>>2]|0)){x=0;g=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;E=x;x=0;if(E&1){D=25;break}}else g=k[g>>2]|0;if(tp(g,t,a,u,v,n,C,y,z,s)|0){g=l;break}g=k[h>>2]|0;if((g|0)==(k[m>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;E=x;x=0;if(E&1){D=25;break}else{g=d;continue}}else{k[h>>2]=g+4;g=d;continue}}if((D|0)==25){a=Wa()|0;break}E=i[C>>0]|0;if((((E&1)==0?(E&255)>>>1:k[C+4>>2]|0)|0)!=0?(w=k[z>>2]|0,(w-y|0)<160):0){E=k[v>>2]|0;k[z>>2]=w+4;k[w>>2]=E}x=0;a=Ea(23,a|0,k[u>>2]|0,e|0,t|0)|0;E=x;x=0;if(!(E&1)){j[f>>1]=a;cs(C,y,k[z>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;E=x;x=0;if(E&1){D=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;E=x;x=0;if(E&1){D=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{D=53;break}else{k[c>>2]=0;D=51;break}}else D=51;while(0);if((D|0)==51?d:0)D=53;if((D|0)==53)k[e>>2]=k[e>>2]|2;E=k[b>>2]|0;Sm(B);Sm(C);r=A;return E|0}else D=26}else D=26;while(0);if((D|0)==26)a=Wa()|0;Sm(B);Sm(C);fb(a|0);return 0}function Wu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;z=r;r=r+320|0;q=z+208|0;g=z+200|0;B=z+24|0;A=z+12|0;t=z+8|0;w=z+40|0;y=z+4|0;u=z;s=ru(d)|0;xp(B,d,q,g);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);p=x;x=0;a:do if(!(p&1)){n=A+8|0;o=A+1|0;a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a;k[y>>2]=w;k[u>>2]=0;p=A+4|0;m=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){C=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;d=0;h=1}else{d=g;h=0}}else{d=0;h=1}j=k[c>>2]|0;do if(j){g=k[j+12>>2]|0;if((g|0)==(k[j+16>>2]|0)){x=0;g=ta(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;l=x;x=0;if(l&1){C=25;break b}}else g=k[g>>2]|0;if((g|0)!=-1)if(h)break;else{g=j;break b}else{k[c>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(h){g=0;break}else j=0}g=i[A>>0]|0;g=(g&1)==0?(g&255)>>>1:k[p>>2]|0;if((k[t>>2]|0)==(a+g|0)){x=0;Fa(8,A|0,g<<1|0,0);l=x;x=0;if(l&1){C=25;break}if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);l=x;x=0;if(l&1){C=25;break}a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a+g}h=d+12|0;g=k[h>>2]|0;l=d+16|0;if((g|0)==(k[l>>2]|0)){x=0;g=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}}else g=k[g>>2]|0;if(tp(g,s,a,t,u,m,B,w,y,q)|0){g=j;break}g=k[h>>2]|0;if((g|0)==(k[l>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}else{g=d;continue}}else{k[h>>2]=g+4;g=d;continue}}if((C|0)==25){a=Wa()|0;break}D=i[B>>0]|0;if((((D&1)==0?(D&255)>>>1:k[B+4>>2]|0)|0)!=0?(v=k[y>>2]|0,(v-w|0)<160):0){D=k[u>>2]|0;k[y>>2]=v+4;k[v>>2]=D}x=0;a=Ea(24,a|0,k[t>>2]|0,e|0,s|0)|0;D=x;x=0;if(!(D&1)){k[f>>2]=a;cs(B,w,k[y>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{C=53;break}else{k[c>>2]=0;C=51;break}}else C=51;while(0);if((C|0)==51?d:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;Sm(A);Sm(B);r=z;return D|0}else C=26}else C=26;while(0);if((C|0)==26)a=Wa()|0;Sm(A);Sm(B);fb(a|0);return 0}function Xu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;z=r;r=r+320|0;q=z+208|0;g=z+200|0;B=z+24|0;A=z+12|0;t=z+8|0;w=z+40|0;y=z+4|0;u=z;s=ru(d)|0;xp(B,d,q,g);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);p=x;x=0;a:do if(!(p&1)){n=A+8|0;o=A+1|0;a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a;k[y>>2]=w;k[u>>2]=0;p=A+4|0;m=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){C=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;d=0;h=1}else{d=g;h=0}}else{d=0;h=1}j=k[c>>2]|0;do if(j){g=k[j+12>>2]|0;if((g|0)==(k[j+16>>2]|0)){x=0;g=ta(k[(k[j>>2]|0)+36>>2]|0,j|0)|0;l=x;x=0;if(l&1){C=25;break b}}else g=k[g>>2]|0;if((g|0)!=-1)if(h)break;else{g=j;break b}else{k[c>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(h){g=0;break}else j=0}g=i[A>>0]|0;g=(g&1)==0?(g&255)>>>1:k[p>>2]|0;if((k[t>>2]|0)==(a+g|0)){x=0;Fa(8,A|0,g<<1|0,0);l=x;x=0;if(l&1){C=25;break}if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);l=x;x=0;if(l&1){C=25;break}a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a+g}h=d+12|0;g=k[h>>2]|0;l=d+16|0;if((g|0)==(k[l>>2]|0)){x=0;g=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}}else g=k[g>>2]|0;if(tp(g,s,a,t,u,m,B,w,y,q)|0){g=j;break}g=k[h>>2]|0;if((g|0)==(k[l>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=25;break}else{g=d;continue}}else{k[h>>2]=g+4;g=d;continue}}if((C|0)==25){a=Wa()|0;break}D=i[B>>0]|0;if((((D&1)==0?(D&255)>>>1:k[B+4>>2]|0)|0)!=0?(v=k[y>>2]|0,(v-w|0)<160):0){D=k[u>>2]|0;k[y>>2]=v+4;k[v>>2]=D}x=0;a=Ea(25,a|0,k[t>>2]|0,e|0,s|0)|0;D=x;x=0;if(!(D&1)){k[f>>2]=a;cs(B,w,k[y>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;D=x;x=0;if(D&1){C=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{C=53;break}else{k[c>>2]=0;C=51;break}}else C=51;while(0);if((C|0)==51?d:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;Sm(A);Sm(B);r=z;return D|0}else C=26}else C=26;while(0);if((C|0)==26)a=Wa()|0;Sm(A);Sm(B);fb(a|0);return 0}function Yu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;z=r;r=r+320|0;q=z+208|0;g=z+200|0;B=z+24|0;A=z+12|0;t=z+8|0;w=z+40|0;y=z+4|0;u=z;s=ru(d)|0;xp(B,d,q,g);k[A>>2]=0;k[A+4>>2]=0;k[A+8>>2]=0;if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);p=x;x=0;a:do if(!(p&1)){n=A+8|0;o=A+1|0;a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a;k[y>>2]=w;k[u>>2]=0;p=A+4|0;m=k[g>>2]|0;g=k[b>>2]|0;b:while(1){if(g){d=k[g+12>>2]|0;if((d|0)==(k[g+16>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;l=x;x=0;if(l&1){C=25;break}}else d=k[d>>2]|0;if((d|0)==-1){k[b>>2]=0;g=0;j=1}else j=0}else{g=0;j=1}h=k[c>>2]|0;do if(h){d=k[h+12>>2]|0;if((d|0)==(k[h+16>>2]|0)){x=0;d=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;l=x;x=0;if(l&1){C=25;break b}}else d=k[d>>2]|0;if((d|0)!=-1)if(j)break;else break b;else{k[c>>2]=0;C=17;break}}else C=17;while(0);if((C|0)==17){C=0;if(j){h=0;break}else h=0}d=i[A>>0]|0;d=(d&1)==0?(d&255)>>>1:k[p>>2]|0;if((k[t>>2]|0)==(a+d|0)){x=0;Fa(8,A|0,d<<1|0,0);l=x;x=0;if(l&1){C=25;break}if(!(i[A>>0]&1))a=10;else a=(k[A>>2]&-2)+-1|0;x=0;Fa(8,A|0,a|0,0);l=x;x=0;if(l&1){C=25;break}a=(i[A>>0]&1)==0?o:k[n>>2]|0;k[t>>2]=a+d}j=g+12|0;d=k[j>>2]|0;l=g+16|0;if((d|0)==(k[l>>2]|0)){x=0;d=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=25;break}}else d=k[d>>2]|0;if(tp(d,s,a,t,u,m,B,w,y,q)|0)break;d=k[j>>2]|0;if((d|0)==(k[l>>2]|0)){x=0;ta(k[(k[g>>2]|0)+40>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=25;break}else continue}else{k[j>>2]=d+4;continue}}if((C|0)==25){a=Wa()|0;break}D=i[B>>0]|0;if((((D&1)==0?(D&255)>>>1:k[B+4>>2]|0)|0)!=0?(v=k[y>>2]|0,(v-w|0)<160):0){D=k[u>>2]|0;k[y>>2]=v+4;k[v>>2]=D}x=0;a=Ea(26,a|0,k[t>>2]|0,e|0,s|0)|0;d=M;D=x;x=0;if(!(D&1)){D=f;k[D>>2]=a;k[D+4>>2]=d;cs(B,w,k[y>>2]|0,e);if(g){a=k[g+12>>2]|0;if((a|0)==(k[g+16>>2]|0)){x=0;a=ta(k[(k[g>>2]|0)+36>>2]|0,g|0)|0;D=x;x=0;if(D&1){C=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;D=x;x=0;if(D&1){C=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{C=53;break}else{k[c>>2]=0;C=51;break}}else C=51;while(0);if((C|0)==51?d:0)C=53;if((C|0)==53)k[e>>2]=k[e>>2]|2;D=k[b>>2]|0;Sm(A);Sm(B);r=z;return D|0}else C=26}else C=26;while(0);if((C|0)==26)a=Wa()|0;Sm(A);Sm(B);fb(a|0);return 0}function Zu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=r;r=r+352|0;u=D+208|0;h=D+40|0;j=D+36|0;F=D+24|0;E=D+12|0;w=D+8|0;B=D+48|0;C=D+4|0;y=D;z=D+337|0;v=D+336|0;yp(F,d,u,h,j);k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);t=x;x=0;a:do if(!(t&1)){q=E+8|0;s=E+1|0;a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a;k[C>>2]=B;k[y>>2]=0;i[z>>0]=1;i[v>>0]=69;t=E+4|0;p=k[h>>2]|0;n=k[j>>2]|0;d=k[b>>2]|0;b:while(1){if(d){h=k[d+12>>2]|0;if((h|0)==(k[d+16>>2]|0)){x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;m=x;x=0;if(m&1){G=25;break}}else h=k[h>>2]|0;if((h|0)==-1){k[b>>2]=0;d=0;l=1}else l=0}else{d=0;l=1}h=k[c>>2]|0;do if(h){j=k[h+12>>2]|0;if((j|0)==(k[h+16>>2]|0)){x=0;j=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;m=x;x=0;if(m&1){G=25;break b}}else j=k[j>>2]|0;if((j|0)!=-1)if(l)break;else break b;else{k[c>>2]=0;G=17;break}}else G=17;while(0);if((G|0)==17){G=0;if(l){h=0;break}else h=0}j=i[E>>0]|0;j=(j&1)==0?(j&255)>>>1:k[t>>2]|0;if((k[w>>2]|0)==(a+j|0)){x=0;Fa(8,E|0,j<<1|0,0);m=x;x=0;if(m&1){G=25;break}if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);m=x;x=0;if(m&1){G=25;break}a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a+j}l=d+12|0;j=k[l>>2]|0;m=d+16|0;if((j|0)==(k[m>>2]|0)){x=0;j=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}}else j=k[j>>2]|0;if(zp(j,z,v,a,w,p,n,F,B,C,y,u)|0)break;h=k[l>>2]|0;if((h|0)==(k[m>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}else continue}else{k[l>>2]=h+4;continue}}if((G|0)==25){a=Wa()|0;break}H=i[F>>0]|0;if(!((i[z>>0]|0)==0?1:(((H&1)==0?(H&255)>>>1:k[F+4>>2]|0)|0)==0)?(A=k[C>>2]|0,(A-B|0)<160):0){H=k[y>>2]|0;k[C>>2]=A+4;k[A>>2]=H}x=0;g=+Ca(1,a|0,k[w>>2]|0,e|0);H=x;x=0;if(!(H&1)){o[f>>2]=g;cs(F,B,k[C>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;H=x;x=0;if(H&1){G=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{G=53;break}else{k[c>>2]=0;G=51;break}}else G=51;while(0);if((G|0)==51?d:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;H=k[b>>2]|0;Sm(E);Sm(F);r=D;return H|0}else G=26}else G=26;while(0);if((G|0)==26)a=Wa()|0;Sm(E);Sm(F);fb(a|0);return 0}function _u(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=r;r=r+352|0;u=D+208|0;h=D+40|0;j=D+36|0;F=D+24|0;E=D+12|0;w=D+8|0;B=D+48|0;C=D+4|0;y=D;z=D+337|0;v=D+336|0;yp(F,d,u,h,j);k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);t=x;x=0;a:do if(!(t&1)){q=E+8|0;s=E+1|0;a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a;k[C>>2]=B;k[y>>2]=0;i[z>>0]=1;i[v>>0]=69;t=E+4|0;o=k[h>>2]|0;n=k[j>>2]|0;d=k[b>>2]|0;b:while(1){if(d){h=k[d+12>>2]|0;if((h|0)==(k[d+16>>2]|0)){x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;m=x;x=0;if(m&1){G=25;break}}else h=k[h>>2]|0;if((h|0)==-1){k[b>>2]=0;d=0;l=1}else l=0}else{d=0;l=1}h=k[c>>2]|0;do if(h){j=k[h+12>>2]|0;if((j|0)==(k[h+16>>2]|0)){x=0;j=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;m=x;x=0;if(m&1){G=25;break b}}else j=k[j>>2]|0;if((j|0)!=-1)if(l)break;else break b;else{k[c>>2]=0;G=17;break}}else G=17;while(0);if((G|0)==17){G=0;if(l){h=0;break}else h=0}j=i[E>>0]|0;j=(j&1)==0?(j&255)>>>1:k[t>>2]|0;if((k[w>>2]|0)==(a+j|0)){x=0;Fa(8,E|0,j<<1|0,0);m=x;x=0;if(m&1){G=25;break}if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);m=x;x=0;if(m&1){G=25;break}a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a+j}l=d+12|0;j=k[l>>2]|0;m=d+16|0;if((j|0)==(k[m>>2]|0)){x=0;j=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}}else j=k[j>>2]|0;if(zp(j,z,v,a,w,o,n,F,B,C,y,u)|0)break;h=k[l>>2]|0;if((h|0)==(k[m>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}else continue}else{k[l>>2]=h+4;continue}}if((G|0)==25){a=Wa()|0;break}H=i[F>>0]|0;if(!((i[z>>0]|0)==0?1:(((H&1)==0?(H&255)>>>1:k[F+4>>2]|0)|0)==0)?(A=k[C>>2]|0,(A-B|0)<160):0){H=k[y>>2]|0;k[C>>2]=A+4;k[A>>2]=H}x=0;g=+Ca(2,a|0,k[w>>2]|0,e|0);H=x;x=0;if(!(H&1)){p[f>>3]=g;cs(F,B,k[C>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;H=x;x=0;if(H&1){G=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{G=53;break}else{k[c>>2]=0;G=51;break}}else G=51;while(0);if((G|0)==51?d:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;H=k[b>>2]|0;Sm(E);Sm(F);r=D;return H|0}else G=26}else G=26;while(0);if((G|0)==26)a=Wa()|0;Sm(E);Sm(F);fb(a|0);return 0}function $u(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0.0,h=0,j=0,l=0,m=0,n=0,o=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=r;r=r+352|0;u=D+208|0;h=D+40|0;j=D+36|0;F=D+24|0;E=D+12|0;w=D+8|0;B=D+48|0;C=D+4|0;y=D;z=D+337|0;v=D+336|0;yp(F,d,u,h,j);k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);t=x;x=0;a:do if(!(t&1)){q=E+8|0;s=E+1|0;a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a;k[C>>2]=B;k[y>>2]=0;i[z>>0]=1;i[v>>0]=69;t=E+4|0;o=k[h>>2]|0;n=k[j>>2]|0;d=k[b>>2]|0;b:while(1){if(d){h=k[d+12>>2]|0;if((h|0)==(k[d+16>>2]|0)){x=0;h=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;m=x;x=0;if(m&1){G=25;break}}else h=k[h>>2]|0;if((h|0)==-1){k[b>>2]=0;d=0;l=1}else l=0}else{d=0;l=1}h=k[c>>2]|0;do if(h){j=k[h+12>>2]|0;if((j|0)==(k[h+16>>2]|0)){x=0;j=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;m=x;x=0;if(m&1){G=25;break b}}else j=k[j>>2]|0;if((j|0)!=-1)if(l)break;else break b;else{k[c>>2]=0;G=17;break}}else G=17;while(0);if((G|0)==17){G=0;if(l){h=0;break}else h=0}j=i[E>>0]|0;j=(j&1)==0?(j&255)>>>1:k[t>>2]|0;if((k[w>>2]|0)==(a+j|0)){x=0;Fa(8,E|0,j<<1|0,0);m=x;x=0;if(m&1){G=25;break}if(!(i[E>>0]&1))a=10;else a=(k[E>>2]&-2)+-1|0;x=0;Fa(8,E|0,a|0,0);m=x;x=0;if(m&1){G=25;break}a=(i[E>>0]&1)==0?s:k[q>>2]|0;k[w>>2]=a+j}l=d+12|0;j=k[l>>2]|0;m=d+16|0;if((j|0)==(k[m>>2]|0)){x=0;j=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}}else j=k[j>>2]|0;if(zp(j,z,v,a,w,o,n,F,B,C,y,u)|0)break;h=k[l>>2]|0;if((h|0)==(k[m>>2]|0)){x=0;ta(k[(k[d>>2]|0)+40>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=25;break}else continue}else{k[l>>2]=h+4;continue}}if((G|0)==25){a=Wa()|0;break}H=i[F>>0]|0;if(!((i[z>>0]|0)==0?1:(((H&1)==0?(H&255)>>>1:k[F+4>>2]|0)|0)==0)?(A=k[C>>2]|0,(A-B|0)<160):0){H=k[y>>2]|0;k[C>>2]=A+4;k[A>>2]=H}x=0;g=+Ca(3,a|0,k[w>>2]|0,e|0);H=x;x=0;if(!(H&1)){p[f>>3]=g;cs(F,B,k[C>>2]|0,e);if(d){a=k[d+12>>2]|0;if((a|0)==(k[d+16>>2]|0)){x=0;a=ta(k[(k[d>>2]|0)+36>>2]|0,d|0)|0;H=x;x=0;if(H&1){G=26;break}}else a=k[a>>2]|0;if((a|0)==-1){k[b>>2]=0;d=1}else d=0}else d=1;do if(h){a=k[h+12>>2]|0;if((a|0)==(k[h+16>>2]|0)){x=0;a=ta(k[(k[h>>2]|0)+36>>2]|0,h|0)|0;H=x;x=0;if(H&1){G=26;break a}}else a=k[a>>2]|0;if((a|0)!=-1)if(d)break;else{G=53;break}else{k[c>>2]=0;G=51;break}}else G=51;while(0);if((G|0)==51?d:0)G=53;if((G|0)==53)k[e>>2]=k[e>>2]|2;H=k[b>>2]|0;Sm(E);Sm(F);r=D;return H|0}else G=26}else G=26;while(0);if((G|0)==26)a=Wa()|0;Sm(E);Sm(F);fb(a|0);return 0}function av(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=r;r=r+16|0;g=f;k[g>>2]=e;e=Ak(c)|0;c=ol(a,b,d,g)|0;if((e|0)!=0?(x=0,ta(75,e|0)|0,g=x,x=0,g&1):0){g=Wa(0)|0;oc(g)}r=f;return c|0}function bv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=Ak(b)|0;x=0;b=va(37,a|0,c|0,f|0)|0;a=x;x=0;if(a&1){b=Wa()|0;if((d|0)!=0?(x=0,ta(75,d|0)|0,f=x,x=0,f&1):0){f=Wa(0)|0;oc(f)}fb(b|0)}else{if((d|0)!=0?(x=0,ta(75,d|0)|0,f=x,x=0,f&1):0){f=Wa(0)|0;oc(f)}r=e;return b|0}return 0}function cv(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+16|0;m=n;g=k[a>>2]|0;a:do if(!g)g=0;else{o=b;j=d-o>>2;l=e+12|0;h=k[l>>2]|0;j=(h|0)>(j|0)?h-j|0:0;h=c;o=h-o|0;e=o>>2;if((o|0)>0?(Qb[k[(k[g>>2]|0)+48>>2]&63](g,b,e)|0)!=(e|0):0){k[a>>2]=0;g=0;break}do if((j|0)>0){dn(m,j,f);x=0;e=va(k[(k[g>>2]|0)+48>>2]|0,g|0,((i[m>>0]&1)==0?m+4|0:k[m+8>>2]|0)|0,j|0)|0;o=x;x=0;if(o&1){o=Wa()|0;en(m);fb(o|0)}if((e|0)==(j|0)){en(m);break}else{k[a>>2]=0;en(m);g=0;break a}}while(0);o=d-h|0;d=o>>2;if((o|0)>0?(Qb[k[(k[g>>2]|0)+48>>2]&63](g,c,d)|0)!=(d|0):0){k[a>>2]=0;g=0;break}k[l>>2]=0}while(0);r=n;return g|0}function dv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0;f=k[a>>2]|0;do if(f){if((k[f+12>>2]|0)==(k[f+16>>2]|0))if((Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0)==-1){k[a>>2]=0;f=0;break}else{f=k[a>>2]|0;break}}else f=0;while(0);g=(f|0)==0;f=k[b>>2]|0;do if(f){if((k[f+12>>2]|0)==(k[f+16>>2]|0)?(Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0)==-1:0){k[b>>2]=0;r=11;break}if(g)r=13;else r=12}else r=11;while(0);if((r|0)==11)if(g)r=12;else{f=0;r=13}a:do if((r|0)==12){k[c>>2]=k[c>>2]|6;f=0}else if((r|0)==13){g=k[a>>2]|0;h=k[g+12>>2]|0;if((h|0)==(k[g+16>>2]|0))g=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=l[h>>0]|0;h=g&255;if(h<<24>>24>-1?(q=d+8|0,(j[(k[q>>2]|0)+(g<<24>>24<<1)>>1]&2048)!=0):0){m=(Qb[k[(k[d>>2]|0)+36>>2]&63](d,h,0)|0)<<24>>24;g=k[a>>2]|0;h=g+12|0;i=k[h>>2]|0;if((i|0)==(k[g+16>>2]|0)){Ob[k[(k[g>>2]|0)+40>>2]&127](g)|0;o=e;n=f;e=f;f=m}else{k[h>>2]=i+1;o=e;n=f;e=f;f=m}while(1){f=f+-48|0;p=o+-1|0;g=k[a>>2]|0;do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0))if((Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0)==-1){k[a>>2]=0;g=0;break}else{g=k[a>>2]|0;break}}else g=0;while(0);i=(g|0)==0;if(e)if((k[e+12>>2]|0)==(k[e+16>>2]|0))if((Ob[k[(k[e>>2]|0)+36>>2]&127](e)|0)==-1){k[b>>2]=0;h=0;e=0}else{h=n;e=n}else h=n;else{h=n;e=0}g=k[a>>2]|0;if(!((o|0)>1&(i^(e|0)==0)))break;i=k[g+12>>2]|0;if((i|0)==(k[g+16>>2]|0))g=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=l[i>>0]|0;i=g&255;if(i<<24>>24<=-1)break a;if(!(j[(k[q>>2]|0)+(g<<24>>24<<1)>>1]&2048))break a;f=((Qb[k[(k[d>>2]|0)+36>>2]&63](d,i,0)|0)<<24>>24)+(f*10|0)|0;g=k[a>>2]|0;i=g+12|0;m=k[i>>2]|0;if((m|0)==(k[g+16>>2]|0)){Ob[k[(k[g>>2]|0)+40>>2]&127](g)|0;o=p;n=h;continue}else{k[i>>2]=m+1;o=p;n=h;continue}}do if(g){if((k[g+12>>2]|0)==(k[g+16>>2]|0))if((Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0)==-1){k[a>>2]=0;g=0;break}else{g=k[a>>2]|0;break}}else g=0;while(0);g=(g|0)==0;do if(h){if((k[h+12>>2]|0)==(k[h+16>>2]|0)?(Ob[k[(k[h>>2]|0)+36>>2]&127](h)|0)==-1:0){k[b>>2]=0;r=50;break}if(g)break a}else r=50;while(0);if((r|0)==50?!g:0)break;k[c>>2]=k[c>>2]|2;break}k[c>>2]=k[c>>2]|4;f=0}while(0);return f|0}function ev(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;f=k[a>>2]|0;do if(f){g=k[f+12>>2]|0;if((g|0)==(k[f+16>>2]|0))f=Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=k[g>>2]|0;if((f|0)==-1){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);g=k[b>>2]|0;do if(g){f=k[g+12>>2]|0;if((f|0)==(k[g+16>>2]|0))f=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else f=k[f>>2]|0;if((f|0)!=-1)if(h){o=17;break}else{o=16;break}else{k[b>>2]=0;o=14;break}}else o=14;while(0);if((o|0)==14)if(h)o=16;else{g=0;o=17}a:do if((o|0)==16){k[c>>2]=k[c>>2]|6;f=0}else if((o|0)==17){f=k[a>>2]|0;h=k[f+12>>2]|0;if((h|0)==(k[f+16>>2]|0))f=Ob[k[(k[f>>2]|0)+36>>2]&127](f)|0;else f=k[h>>2]|0;if(!(Qb[k[(k[d>>2]|0)+12>>2]&63](d,2048,f)|0)){k[c>>2]=k[c>>2]|4;f=0;break}f=(Qb[k[(k[d>>2]|0)+52>>2]&63](d,f,0)|0)<<24>>24;h=k[a>>2]|0;i=h+12|0;j=k[i>>2]|0;if((j|0)==(k[h+16>>2]|0)){Ob[k[(k[h>>2]|0)+40>>2]&127](h)|0;m=e;l=g;i=g}else{k[i>>2]=j+4;m=e;l=g;i=g}while(1){f=f+-48|0;n=m+-1|0;g=k[a>>2]|0;do if(g){h=k[g+12>>2]|0;if((h|0)==(k[g+16>>2]|0))g=Ob[k[(k[g>>2]|0)+36>>2]&127](g)|0;else g=k[h>>2]|0;if((g|0)==-1){k[a>>2]=0;j=1;break}else{j=(k[a>>2]|0)==0;break}}else j=1;while(0);do if(i){g=k[i+12>>2]|0;if((g|0)==(k[i+16>>2]|0))g=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else g=k[g>>2]|0;if((g|0)==-1){k[b>>2]=0;i=0;e=0;g=1;break}else{i=l;e=l;g=(l|0)==0;break}}else{i=l;e=0;g=1}while(0);h=k[a>>2]|0;if(!((m|0)>1&(j^g)))break;g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Ob[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=k[g>>2]|0;if(!(Qb[k[(k[d>>2]|0)+12>>2]&63](d,2048,g)|0))break a;f=((Qb[k[(k[d>>2]|0)+52>>2]&63](d,g,0)|0)<<24>>24)+(f*10|0)|0;g=k[a>>2]|0;h=g+12|0;j=k[h>>2]|0;if((j|0)==(k[g+16>>2]|0)){Ob[k[(k[g>>2]|0)+40>>2]&127](g)|0;m=n;l=i;i=e;continue}else{k[h>>2]=j+4;m=n;l=i;i=e;continue}}do if(h){g=k[h+12>>2]|0;if((g|0)==(k[h+16>>2]|0))g=Ob[k[(k[h>>2]|0)+36>>2]&127](h)|0;else g=k[g>>2]|0;if((g|0)==-1){k[a>>2]=0;h=1;break}else{h=(k[a>>2]|0)==0;break}}else h=1;while(0);do if(i){g=k[i+12>>2]|0;if((g|0)==(k[i+16>>2]|0))g=Ob[k[(k[i>>2]|0)+36>>2]&127](i)|0;else g=k[g>>2]|0;if((g|0)!=-1)if(h)break a;else break;else{k[b>>2]=0;o=60;break}}else o=60;while(0);if((o|0)==60?!h:0)break;k[c>>2]=k[c>>2]|2}while(0);return f|0}function fv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=(k[f>>2]|0)!=189;h=k[a>>2]|0;g=h;e=(k[c>>2]|0)-g|0;e=e>>>0<2147483647?e<<1:-1;g=(k[b>>2]|0)-g|0;h=Sl(d?h:0,e)|0;if(!h)ak();do if(!d){d=k[a>>2]|0;k[a>>2]=h;if(d){x=0;qa(k[f>>2]|0,d|0);h=x;x=0;if(h&1){h=Wa(0)|0;oc(h)}else{i=k[a>>2]|0;break}}else i=h}else{k[a>>2]=h;i=h}while(0);k[f>>2]=201;k[b>>2]=i+g;k[c>>2]=(k[a>>2]|0)+e;return}function gv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=(k[f>>2]|0)!=189;h=k[a>>2]|0;g=h;e=(k[c>>2]|0)-g|0;e=e>>>0<2147483647?e<<1:-1;g=(k[b>>2]|0)-g>>2;h=Sl(d?h:0,e)|0;if(!h)ak();do if(!d){d=k[a>>2]|0;k[a>>2]=h;if(d){x=0;qa(k[f>>2]|0,d|0);h=x;x=0;if(h&1){h=Wa(0)|0;oc(h)}else{i=k[a>>2]|0;break}}else i=h}else{k[a>>2]=h;i=h}while(0);k[f>>2]=201;k[b>>2]=i+(g<<2);k[c>>2]=(k[a>>2]|0)+(e>>>2<<2);return}function hv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=b;d=i[a>>0]|0;if(!(d&1)){e=10;j=(d&255)>>>1}else{d=k[a>>2]|0;e=(d&-2)+-1|0;j=k[a+4>>2]|0;d=d&255}h=c-f|0;do if((c|0)!=(b|0)){if((e-j|0)>>>0>>0){bn(a,e,j+h-e|0,j,j,0,0);d=i[a>>0]|0}if(!(d&1))g=a+1|0;else g=k[a+8>>2]|0;f=c+(j-f)|0;if((b|0)!=(c|0)){d=b;e=g+j|0;while(1){i[e>>0]=i[d>>0]|0;d=d+1|0;if((d|0)==(c|0))break;else e=e+1|0}}i[g+f>>0]=0;d=j+h|0;if(!(i[a>>0]&1)){i[a>>0]=d<<1;break}else{k[a+4>>2]=d;break}}while(0);return a|0}function iv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;d=(k[f>>2]|0)!=189;h=k[a>>2]|0;g=h;e=(k[c>>2]|0)-g|0;e=e>>>0<2147483647?e<<1:-1;g=(k[b>>2]|0)-g>>2;h=Sl(d?h:0,e)|0;if(!h)ak();do if(!d){d=k[a>>2]|0;k[a>>2]=h;if(d){x=0;qa(k[f>>2]|0,d|0);h=x;x=0;if(h&1){h=Wa(0)|0;oc(h)}else{i=k[a>>2]|0;break}}else i=h}else{k[a>>2]=h;i=h}while(0);k[f>>2]=201;k[b>>2]=i+(g<<2);k[c>>2]=(k[a>>2]|0)+(e>>>2<<2);return}function jv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;f=b;d=i[a>>0]|0;if(!(d&1)){e=1;j=(d&255)>>>1}else{d=k[a>>2]|0;e=(d&-2)+-1|0;j=k[a+4>>2]|0;d=d&255}h=c-f>>2;do if(h){if((e-j|0)>>>0>>0){ln(a,e,j+h-e|0,j,j,0,0);d=i[a>>0]|0}if(!(d&1))g=a+4|0;else g=k[a+8>>2]|0;f=j+((c-f|0)>>>2)|0;if((b|0)!=(c|0)){d=b;e=g+(j<<2)|0;while(1){k[e>>2]=k[d>>2];d=d+4|0;if((d|0)==(c|0))break;else e=e+4|0}}k[g+(f<<2)>>2]=0;d=j+h|0;if(!(i[a>>0]&1)){i[a>>0]=d<<1;break}else{k[a+4>>2]=d;break}}while(0);return a|0}function kv(a,b){a=a|0;b=b|0;var c=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;i[a+128>>0]=0;do if(b){x=0;ra(125,a|0,b|0);c=x;x=0;if(c&1){c=Wa()|0;Nv(a);fb(c|0)}else{cw(a,b);break}}while(0);return}function lv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43148)|0);return}function mv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43188)|0);return}function nv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44220)|0);return}function ov(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44212)|0);return}function pv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44280)|0);return}function qv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44288)|0);return}function rv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44344)|0);return}function sv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44352)|0);return}function tv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44360)|0);return}function uv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44368)|0);return}function vv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43260)|0);return}function wv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43332)|0);return}function xv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43392)|0);return}function yv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43452)|0);return}function zv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43764)|0);return}function Av(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43828)|0);return}function Bv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43892)|0);return}function Cv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43956)|0);return}function Dv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43992)|0);return}function Ev(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44028)|0);return}function Fv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44064)|0);return}function Gv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44100)|0);return}function Hv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43544)|0);return}function Iv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43636)|0);return}function Jv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43668)|0);return}function Kv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(43700)|0);return}function Lv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44140)|0);return}function Mv(a,b){a=a|0;b=b|0;Hs(a,b,Rs(44180)|0);return}function Nv(a){a=a|0;var b=0,c=0,d=0;c=k[a>>2]|0;do if(c){d=a+4|0;b=k[d>>2]|0;if((b|0)!=(c|0)){do b=b+-4|0;while((b|0)!=(c|0));k[d>>2]=b}if((a+16|0)==(c|0)){i[a+128>>0]=0;break}else{mj(c);break}}while(0);return}function Ov(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;c=k[g>>2]|0;d=k[a>>2]|0;e=c-d>>2;if(e>>>0>=b>>>0){if(e>>>0>b>>>0?(f=d+(b<<2)|0,(c|0)!=(f|0)):0){do c=c+-4|0;while((c|0)!=(f|0));k[g>>2]=c}}else bw(a,b-e|0);return}function Pv(a,b){a=a|0;b=b|0;var c=0;c=k[a+8>>2]|0;if((k[a+12>>2]|0)-c>>2>>>0>b>>>0)c=(k[c+(b<<2)>>2]|0)!=0;else c=0;return c|0}function Qv(a){a=a|0;var b=0,c=0;c=a+4|0;b=k[c>>2]|0;c=k[c+4>>2]|0;a=(k[a>>2]|0)+(c>>1)|0;if(c&1)b=k[(k[a>>2]|0)+b>>2]|0;Lb[b&255](a);return}function Rv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var l=0,n=0;k[c>>2]=a;k[f>>2]=d;if(h&2)if((e-d|0)<3)a=1;else{k[f>>2]=d+1;i[d>>0]=-17;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=-69;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=-65;l=4}else l=4;a:do if((l|0)==4){n=b;a=k[c>>2]|0;if(a>>>0>>0)while(1){h=j[a>>1]|0;l=h&65535;if(l>>>0>g>>>0){a=2;break a}do if((h&65535)<128){a=k[f>>2]|0;if((e-a|0)<1){a=1;break a}k[f>>2]=a+1;i[a>>0]=h}else{if((h&65535)<2048){a=k[f>>2]|0;if((e-a|0)<2){a=1;break a}k[f>>2]=a+1;i[a>>0]=l>>>6|192;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l&63|128;break}if((h&65535)<55296){a=k[f>>2]|0;if((e-a|0)<3){a=1;break a}k[f>>2]=a+1;i[a>>0]=l>>>12|224;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l>>>6&63|128;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l&63|128;break}if((h&65535)>=56320){if((h&65535)<57344){a=2;break a}a=k[f>>2]|0;if((e-a|0)<3){a=1;break a}k[f>>2]=a+1;i[a>>0]=l>>>12|224;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l>>>6&63|128;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l&63|128;break}if((n-a|0)<4){a=1;break a}a=a+2|0;h=m[a>>1]|0;if((h&64512|0)!=56320){a=2;break a}if((e-(k[f>>2]|0)|0)<4){a=1;break a}d=l&960;if(((d<<10)+65536|l<<10&64512|h&1023)>>>0>g>>>0){a=2;break a}k[c>>2]=a;a=(d>>>6)+1|0;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=a>>>2|240;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l>>>2&15|a<<4&48|128;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=l<<4&48|h>>>6&15|128;l=k[f>>2]|0;k[f>>2]=l+1;i[l>>0]=h&63|128}while(0);a=(k[c>>2]|0)+2|0;k[c>>2]=a;if(a>>>0>=b>>>0){a=0;break}}else a=0}while(0);return a|0}function Sv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var m=0,n=0,o=0,p=0,q=0,r=0;k[c>>2]=a;k[f>>2]=d;if(h&4){a=k[c>>2]|0;h=b;if((((h-a|0)>2?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0)?(i[a+2>>0]|0)==-65:0){k[c>>2]=a+3;m=k[f>>2]|0}else m=d}else{m=d;h=b}q=e;d=k[c>>2]|0;a=d>>>0>>0;a:do if(a&m>>>0>>0)while(1){a=i[d>>0]|0;o=a&255;if(o>>>0>g>>>0){a=2;break a}do if(a<<24>>24>-1){j[m>>1]=a&255;k[c>>2]=d+1}else{if((a&255)<194){a=2;break a}if((a&255)<224){if((h-d|0)<2){a=1;break a}a=l[d+1>>0]|0;if((a&192|0)!=128){a=2;break a}a=a&63|o<<6&1984;if(a>>>0>g>>>0){a=2;break a}j[m>>1]=a;k[c>>2]=d+2;break}if((a&255)<240){if((h-d|0)<3){a=1;break a}n=i[d+1>>0]|0;a=i[d+2>>0]|0;switch(o|0){case 224:{if((n&-32)<<24>>24!=-96){a=2;break a}break}case 237:{if((n&-32)<<24>>24!=-128){a=2;break a}break}default:if((n&-64)<<24>>24!=-128){a=2;break a}}a=a&255;if((a&192|0)!=128){a=2;break a}a=(n&255)<<6&4032|o<<12|a&63;if((a&65535)>>>0>g>>>0){a=2;break a}j[m>>1]=a;k[c>>2]=d+3;break}if((a&255)>=245){a=2;break a}if((h-d|0)<4){a=1;break a}n=i[d+1>>0]|0;a=i[d+2>>0]|0;d=i[d+3>>0]|0;switch(o|0){case 240:{if((n+112&255)>=48){a=2;break a}break}case 244:{if((n&-16)<<24>>24!=-128){a=2;break a}break}default:if((n&-64)<<24>>24!=-128){a=2;break a}}p=a&255;if((p&192|0)!=128){a=2;break a}a=d&255;if((a&192|0)!=128){a=2;break a}if((q-m|0)<4){a=1;break a}o=o&7;d=n&255;n=p<<6;a=a&63;if((d<<12&258048|o<<18|n&4032|a)>>>0>g>>>0){a=2;break a}j[m>>1]=d<<2&60|p>>>4&3|((d>>>4&3|o<<2)<<6)+16320|55296;p=m+2|0;k[f>>2]=p;j[p>>1]=a|n&960|56320;k[c>>2]=(k[c>>2]|0)+4}while(0);m=(k[f>>2]|0)+2|0;k[f>>2]=m;d=k[c>>2]|0;a=d>>>0>>0;if(!(a&m>>>0>>0)){r=39;break}}else r=39;while(0);if((r|0)==39)a=a&1;return a|0}function Tv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0;n=b;if((((e&4|0)!=0?(n-a|0)>2:0)?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0)e=(i[a+2>>0]|0)==-65?a+3|0:a;else e=a;a:do if((c|0)!=0&e>>>0>>0){m=e;f=0;b:while(1){e=i[m>>0]|0;k=e&255;if(k>>>0>d>>>0){e=m;f=42;break a}do if(e<<24>>24>-1)e=m+1|0;else{if((e&255)<194){e=m;f=42;break a}if((e&255)<224){if((n-m|0)<2){e=m;f=42;break a}e=l[m+1>>0]|0;if((e&192|0)!=128){e=m;f=42;break a}if((e&63|k<<6&1984)>>>0>d>>>0){e=m;f=42;break a}e=m+2|0;break}if((e&255)<240){e=m;if((n-e|0)<3){e=m;f=42;break a}h=i[m+1>>0]|0;g=i[m+2>>0]|0;switch(k|0){case 224:{if((h&-32)<<24>>24!=-96){f=20;break b}break}case 237:{if((h&-32)<<24>>24!=-128){f=22;break b}break}default:if((h&-64)<<24>>24!=-128){f=24;break b}}e=g&255;if((e&192|0)!=128){e=m;f=42;break a}if(((h&255)<<6&4032|k<<12&61440|e&63)>>>0>d>>>0){e=m;f=42;break a}e=m+3|0;break}if((e&255)>=245){e=m;f=42;break a}e=m;if((c-f|0)>>>0<2|(n-e|0)<4){e=m;f=42;break a}j=i[m+1>>0]|0;g=i[m+2>>0]|0;h=i[m+3>>0]|0;switch(k|0){case 240:{if((j+112&255)>=48){f=32;break b}break}case 244:{if((j&-16)<<24>>24!=-128){f=34;break b}break}default:if((j&-64)<<24>>24!=-128){f=36;break b}}g=g&255;if((g&192|0)!=128){e=m;f=42;break a}e=h&255;if((e&192|0)!=128){e=m;f=42;break a}if(((j&255)<<12&258048|k<<18&1835008|g<<6&4032|e&63)>>>0>d>>>0){e=m;f=42;break a}e=m+4|0;f=f+1|0}while(0);f=f+1|0;if(!(f>>>0>>0&e>>>0>>0)){f=42;break a}else m=e}if((f|0)==20){e=e-a|0;break}else if((f|0)==22){e=e-a|0;break}else if((f|0)==24){e=e-a|0;break}else if((f|0)==32){e=e-a|0;break}else if((f|0)==34){e=e-a|0;break}else if((f|0)==36){e=e-a|0;break}}else f=42;while(0);if((f|0)==42)e=e-a|0;return e|0}function Uv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0;k[c>>2]=a;k[f>>2]=d;l=e;if(h&2)if((l-d|0)<3)a=1;else{k[f>>2]=d+1;i[d>>0]=-17;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=-69;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=-65;j=4}else j=4;a:do if((j|0)==4){a=k[c>>2]|0;if(a>>>0>>0)while(1){h=k[a>>2]|0;if(h>>>0>g>>>0|(h&-2048|0)==55296){a=2;break a}do if(h>>>0>=128){if(h>>>0<2048){a=k[f>>2]|0;if((l-a|0)<2){a=1;break a}k[f>>2]=a+1;i[a>>0]=h>>>6|192;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h&63|128;break}a=k[f>>2]|0;e=l-a|0;if(h>>>0<65536){if((e|0)<3){a=1;break a}k[f>>2]=a+1;i[a>>0]=h>>>12|224;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h>>>6&63|128;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h&63|128;break}else{if((e|0)<4){a=1;break a}k[f>>2]=a+1;i[a>>0]=h>>>18|240;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h>>>12&63|128;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h>>>6&63|128;j=k[f>>2]|0;k[f>>2]=j+1;i[j>>0]=h&63|128;break}}else{a=k[f>>2]|0;if((l-a|0)<1){a=1;break a}k[f>>2]=a+1;i[a>>0]=h}while(0);a=(k[c>>2]|0)+4|0;k[c>>2]=a;if(a>>>0>=b>>>0){a=0;break}}else a=0}while(0);return a|0}function Vv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,m=0,n=0,o=0,p=0,q=0;k[c>>2]=a;k[f>>2]=d;if(h&4){a=k[c>>2]|0;h=b;if((((h-a|0)>2?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0)?(i[a+2>>0]|0)==-65:0){k[c>>2]=a+3;d=k[f>>2]|0;p=h}else p=h}else p=b;h=k[c>>2]|0;a=h>>>0>>0;a:do if(a&d>>>0>>0)while(1){a=i[h>>0]|0;o=a&255;do if(a<<24>>24>-1){if(o>>>0>g>>>0){a=2;break a}k[d>>2]=o;k[c>>2]=h+1}else{if((a&255)<194){a=2;break a}if((a&255)<224){if((p-h|0)<2){a=1;break a}a=l[h+1>>0]|0;if((a&192|0)!=128){a=2;break a}a=a&63|o<<6&1984;if(a>>>0>g>>>0){a=2;break a}k[d>>2]=a;k[c>>2]=h+2;break}if((a&255)<240){if((p-h|0)<3){a=1;break a}j=i[h+1>>0]|0;a=i[h+2>>0]|0;switch(o|0){case 224:{if((j&-32)<<24>>24!=-96){a=2;break a}break}case 237:{if((j&-32)<<24>>24!=-128){a=2;break a}break}default:if((j&-64)<<24>>24!=-128){a=2;break a}}a=a&255;if((a&192|0)!=128){a=2;break a}a=(j&255)<<6&4032|o<<12&61440|a&63;if(a>>>0>g>>>0){a=2;break a}k[d>>2]=a;k[c>>2]=h+3;break}if((a&255)>=245){a=2;break a}if((p-h|0)<4){a=1;break a}n=i[h+1>>0]|0;a=i[h+2>>0]|0;j=i[h+3>>0]|0;switch(o|0){case 240:{if((n+112&255)>=48){a=2;break a}break}case 244:{if((n&-16)<<24>>24!=-128){a=2;break a}break}default:if((n&-64)<<24>>24!=-128){a=2;break a}}m=a&255;if((m&192|0)!=128){a=2;break a}a=j&255;if((a&192|0)!=128){a=2;break a}a=(n&255)<<12&258048|o<<18&1835008|m<<6&4032|a&63;if(a>>>0>g>>>0){a=2;break a}k[d>>2]=a;k[c>>2]=h+4}while(0);d=(k[f>>2]|0)+4|0;k[f>>2]=d;h=k[c>>2]|0;a=h>>>0>>0;if(!(a&d>>>0>>0)){q=38;break}}else q=38;while(0);if((q|0)==38)a=a&1;return a|0}function Wv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,m=0,n=0;n=b;if((((e&4|0)!=0?(n-a|0)>2:0)?(i[a>>0]|0)==-17:0)?(i[a+1>>0]|0)==-69:0)e=(i[a+2>>0]|0)==-65?a+3|0:a;else e=a;a:do if((c|0)!=0&e>>>0>>0){k=e;m=0;b:while(1){e=i[k>>0]|0;j=e&255;do if(e<<24>>24>-1){if(j>>>0>d>>>0){e=k;f=42;break a}e=k+1|0}else{if((e&255)<194){e=k;f=42;break a}if((e&255)<224){if((n-k|0)<2){e=k;f=42;break a}e=l[k+1>>0]|0;if((e&192|0)!=128){e=k;f=42;break a}if((e&63|j<<6&1984)>>>0>d>>>0){e=k;f=42;break a}e=k+2|0;break}if((e&255)<240){e=k;if((n-e|0)<3){e=k;f=42;break a}g=i[k+1>>0]|0;f=i[k+2>>0]|0;switch(j|0){case 224:{if((g&-32)<<24>>24!=-96){f=20;break b}break}case 237:{if((g&-32)<<24>>24!=-128){f=22;break b}break}default:if((g&-64)<<24>>24!=-128){f=24;break b}}e=f&255;if((e&192|0)!=128){e=k;f=42;break a}if(((g&255)<<6&4032|j<<12&61440|e&63)>>>0>d>>>0){e=k;f=42;break a}e=k+3|0;break}if((e&255)>=245){e=k;f=42;break a}e=k;if((n-e|0)<4){e=k;f=42;break a}h=i[k+1>>0]|0;f=i[k+2>>0]|0;g=i[k+3>>0]|0;switch(j|0){case 240:{if((h+112&255)>=48){f=32;break b}break}case 244:{if((h&-16)<<24>>24!=-128){f=34;break b}break}default:if((h&-64)<<24>>24!=-128){f=36;break b}}f=f&255;if((f&192|0)!=128){e=k;f=42;break a}e=g&255;if((e&192|0)!=128){e=k;f=42;break a}if(((h&255)<<12&258048|j<<18&1835008|f<<6&4032|e&63)>>>0>d>>>0){e=k;f=42;break a}e=k+4|0}while(0);m=m+1|0;if(!(m>>>0>>0&e>>>0>>0)){f=42;break a}else k=e}if((f|0)==20){e=e-a|0;break}else if((f|0)==22){e=e-a|0;break}else if((f|0)==24){e=e-a|0;break}else if((f|0)==32){e=e-a|0;break}else if((f|0)==34){e=e-a|0;break}else if((f|0)==36){e=e-a|0;break}}else f=42;while(0);if((f|0)==42)e=e-a|0;return e|0}function Xv(a){a=a|0;Sm(45196);Sm(45184);Sm(45172);Sm(45160);Sm(45148);Sm(45136);Sm(45124);Sm(45112);Sm(45100);Sm(45088);Sm(45076);Sm(45064);Sm(45052);Sm(45040);return}function Yv(a){a=a|0;en(45368);en(45356);en(45344);en(45332);en(45320);en(45308);en(45296);en(45284);en(45272);en(45260);en(45248);en(45236);en(45224);en(45212);return}function Zv(a){a=a|0;Sm(46e3);Sm(45988);Sm(45976);Sm(45964);Sm(45952);Sm(45940);Sm(45928);Sm(45916);Sm(45904);Sm(45892);Sm(45880);Sm(45868);Sm(45856);Sm(45844);Sm(45832);Sm(45820);Sm(45808);Sm(45796);Sm(45784);Sm(45772);Sm(45760);Sm(45748);Sm(45736);Sm(45724);return}function _v(a){a=a|0;en(46292);en(46280);en(46268);en(46256);en(46244);en(46232);en(46220);en(46208);en(46196);en(46184);en(46172);en(46160);en(46148);en(46136);en(46124);en(46112);en(46100);en(46088);en(46076);en(46064);en(46052);en(46040);en(46028);en(46016);return}function $v(a){a=a|0;Sm(47104);Sm(47092);Sm(47080);Sm(47068);Sm(47056);Sm(47044);Sm(47032);Sm(47020);Sm(47008);Sm(46996);Sm(46984);Sm(46972);Sm(46960);Sm(46948);Sm(46936);Sm(46924);Sm(46912);Sm(46900);Sm(46888);Sm(46876);Sm(46864);Sm(46852);Sm(46840);Sm(46828);return}function aw(a){a=a|0;en(47396);en(47384);en(47372);en(47360);en(47348);en(47336);en(47324);en(47312);en(47300);en(47288);en(47276);en(47264);en(47252);en(47240);en(47228);en(47216);en(47204);en(47192);en(47180);en(47168);en(47156);en(47144);en(47132);en(47120);return}function bw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+32|0;h=i;f=k[a+8>>2]|0;c=k[a+4>>2]|0;if(f-c>>2>>>0>>0){d=k[a>>2]|0;g=c-d>>2;e=g+b|0;if(e>>>0>1073741823)jj(a);c=f-d|0;if(c>>2>>>0<536870911){c=c>>1;c=c>>>0>>0?e:c}else c=1073741823;dw(h,c,g,a+16|0);g=h+8|0;f=k[g>>2]|0;sw(f|0,0,b<<2|0)|0;k[g>>2]=f+(b<<2);ew(a,h);fw(h)}else cw(a,b);r=i;return}function cw(a,b){a=a|0;b=b|0;var c=0;c=a+4|0;a=b;b=k[c>>2]|0;do{k[b>>2]=0;b=(k[c>>2]|0)+4|0;k[c>>2]=b;a=a+-1|0}while((a|0)!=0);return}function dw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;k[a+12>>2]=0;k[a+16>>2]=d;do if(b){e=d+112|0;if(b>>>0<29&(i[e>>0]|0)==0){i[e>>0]=1;break}else{d=lj(b<<2)|0;break}}else d=0;while(0);k[a>>2]=d;c=d+(c<<2)|0;k[a+8>>2]=c;k[a+4>>2]=c;k[a+12>>2]=d+(b<<2);return}function ew(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=k[a>>2]|0;f=a+4|0;c=b+4|0;e=(k[f>>2]|0)-d|0;g=(k[c>>2]|0)+(0-(e>>2)<<2)|0;k[c>>2]=g;vw(g|0,d|0,e|0)|0;e=k[a>>2]|0;k[a>>2]=k[c>>2];k[c>>2]=e;e=b+8|0;d=k[f>>2]|0;k[f>>2]=k[e>>2];k[e>>2]=d;e=a+8|0;a=b+12|0;d=k[e>>2]|0;k[e>>2]=k[a>>2];k[a>>2]=d;k[b>>2]=k[c>>2];return}function fw(a){a=a|0;var b=0,c=0,d=0;c=k[a+4>>2]|0;d=a+8|0;b=k[d>>2]|0;if((b|0)!=(c|0)){do b=b+-4|0;while((b|0)!=(c|0));k[d>>2]=b}c=k[a>>2]|0;do if(c){b=k[a+16>>2]|0;if((b|0)==(c|0)){i[b+112>>0]=0;break}else{mj(c);break}}while(0);return}function gw(a,b){a=a|0;b=b|0;var c=0;if(b>>>0>1073741823)jj(a);c=a+128|0;if(b>>>0<29&(i[c>>0]|0)==0){i[c>>0]=1;c=a+16|0}else c=lj(b<<2)|0;k[a+4>>2]=c;k[a>>2]=c;k[a+8>>2]=c+(b<<2);return}function hw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;g=h;do if((a|0)!=(b|0)){e=mk()|0;f=k[e>>2]|0;k[e>>2]=0;d=+ql(a,g,fp()|0);a=k[e>>2]|0;if(!a)k[e>>2]=f;if((k[g>>2]|0)!=(b|0)){k[c>>2]=4;d=0.0;break}if((a|0)==34)k[c>>2]=4}else{k[c>>2]=4;d=0.0}while(0);r=h;return +d}function iw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;g=h;do if((a|0)!=(b|0)){e=mk()|0;f=k[e>>2]|0;k[e>>2]=0;d=+ql(a,g,fp()|0);a=k[e>>2]|0;if(!a)k[e>>2]=f;if((k[g>>2]|0)!=(b|0)){k[c>>2]=4;d=0.0;break}if((a|0)==34)k[c>>2]=4}else{k[c>>2]=4;d=0.0}while(0);r=h;return +d}function jw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;g=h;do if((a|0)==(b|0)){k[c>>2]=4;d=0.0}else{e=mk()|0;f=k[e>>2]|0;k[e>>2]=0;d=+ql(a,g,fp()|0);a=k[e>>2]|0;if(!a)k[e>>2]=f;if((k[g>>2]|0)!=(b|0)){k[c>>2]=4;d=0.0;break}if((a|0)==34)k[c>>2]=4}while(0);r=h;return +d}function kw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=r;r=r+16|0;g=h;do if((a|0)!=(b|0)){if((i[a>>0]|0)==45){k[c>>2]=4;d=0;a=0;break}e=mk()|0;f=k[e>>2]|0;k[e>>2]=0;a=fk(a,g,d,fp()|0)|0;d=k[e>>2]|0;if(!d)k[e>>2]=f;if((k[g>>2]|0)!=(b|0)){k[c>>2]=4;d=0;a=0;break}if((d|0)==34){k[c>>2]=4;d=-1;a=-1}else d=M}else{k[c>>2]=4;d=0;a=0}while(0);M=d;r=h;return a|0}function lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;do if((a|0)!=(b|0)){if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}f=mk()|0;g=k[f>>2]|0;k[f>>2]=0;a=fk(a,h,d,fp()|0)|0;d=M;e=k[f>>2]|0;if(!e)k[f>>2]=g;if((k[h>>2]|0)!=(b|0)){k[c>>2]=4;a=0;break}if(d>>>0>0|(d|0)==0&a>>>0>4294967295|(e|0)==34){k[c>>2]=4;a=-1;break}else break}else{k[c>>2]=4;a=0}while(0);r=j;return a|0}function mw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;do if((a|0)!=(b|0)){if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}f=mk()|0;g=k[f>>2]|0;k[f>>2]=0;a=fk(a,h,d,fp()|0)|0;d=M;e=k[f>>2]|0;if(!e)k[f>>2]=g;if((k[h>>2]|0)!=(b|0)){k[c>>2]=4;a=0;break}if(d>>>0>0|(d|0)==0&a>>>0>4294967295|(e|0)==34){k[c>>2]=4;a=-1;break}else break}else{k[c>>2]=4;a=0}while(0);r=j;return a|0}function nw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;do if((a|0)!=(b|0)){if((i[a>>0]|0)==45){k[c>>2]=4;a=0;break}f=mk()|0;g=k[f>>2]|0;k[f>>2]=0;a=fk(a,h,d,fp()|0)|0;d=M;e=k[f>>2]|0;if(!e)k[f>>2]=g;if((k[h>>2]|0)!=(b|0)){k[c>>2]=4;a=0;break}if(d>>>0>0|(d|0)==0&a>>>0>65535|(e|0)==34){k[c>>2]=4;a=-1;break}else{a=a&65535;break}}else{k[c>>2]=4;a=0}while(0);r=j;return a|0}function ow(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;do if((a|0)!=(b|0)){f=mk()|0;g=k[f>>2]|0;k[f>>2]=0;a=gk(a,h,d,fp()|0)|0;d=M;e=k[f>>2]|0;if(!e)k[f>>2]=g;if((k[h>>2]|0)!=(b|0)){k[c>>2]=4;d=0;a=0;break}if((e|0)==34){k[c>>2]=4;h=(d|0)>0|(d|0)==0&a>>>0>0;M=h?2147483647:-2147483648;r=i;return (h?-1:0)|0}}else{k[c>>2]=4;d=0;a=0}while(0);M=d;r=i;return a|0}function pw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;a:do if((a|0)==(b|0)){k[c>>2]=4;a=0}else{f=mk()|0;g=k[f>>2]|0;k[f>>2]=0;a=gk(a,h,d,fp()|0)|0;d=M;e=k[f>>2]|0;if(!e)k[f>>2]=g;if((k[h>>2]|0)!=(b|0)){k[c>>2]=4;a=0;break}do if((e|0)==34){k[c>>2]=4;if((d|0)>0|(d|0)==0&a>>>0>0){a=2147483647;break a}}else{if((d|0)<-1|(d|0)==-1&a>>>0<2147483648){k[c>>2]=4;break}if((d|0)>0|(d|0)==0&a>>>0>2147483647){k[c>>2]=4;a=2147483647;break a}else break a}while(0);a=-2147483648}while(0);r=i;return a|0}function qw(){}function rw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (M=d,a-c>>>0|0)|0}function sw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function tw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (M=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function uw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b>>>c;return a>>>c|(b&(1<>>c-32|0}function vw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return db(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function ww(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b<>>32-c;return a<0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else vw(a,b,c)|0;return a|0}function yw(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b>>c;return a>>>c|(b&(1<>c-32|0}function zw(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function Aw(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=ia(e,f)|0;d=a>>>16;a=(c>>>16)+(ia(e,d)|0)|0;e=b>>>16;b=ia(e,f)|0;return (M=(a>>>16)+(ia(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Bw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=rw(j^a,i^b,j,i)|0;g=M;a=f^j;b=e^i;return rw((Gw(h,g,rw(f^c,e^d,f,e)|0,M,0)|0)^a,M^b,a,b)|0}function Cw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+16|0;h=e|0;g=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;j=d>>31|((d|0)<0?-1:0)<<1;i=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;a=rw(g^a,f^b,g,f)|0;b=M;Gw(a,b,rw(j^c,i^d,j,i)|0,M,h)|0;d=rw(k[h>>2]^g,k[h+4>>2]^f,g,f)|0;c=M;r=e;return (M=c,d)|0}function Dw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Aw(e,f)|0;a=M;return (M=(ia(b,f)|0)+(ia(d,e)|0)+a|a&0,c|0|0)|0}function Ew(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Gw(a,b,c,d,0)|0}function Fw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;Gw(a,b,c,d,e)|0;r=f;return (M=k[e+4>>2]|0,k[e>>2]|0)|0}function Gw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (M=n,e)|0}else{if(!f){n=0;e=0;return (M=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (M=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ka(h|0)|0)-(ka(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (M=n,e)|0}f=g-1|0;if(f&g){h=(ka(g|0)|0)+33-(ka(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (M=o,p)|0}else{p=zw(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (M=o,p)|0}}else{if(f){if(e){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (M=o,p)|0}if(!l){if(e){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (M=o,p)|0}f=h-1|0;if(!(f&h)){if(e){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((zw(h|0)|0)>>>0);return (M=o,p)|0}f=(ka(h|0)|0)-(ka(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (M=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=tw(m|0,l|0,-1,-1)|0;c=M;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;rw(j,c,d,n)|0;p=M;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=rw(d,n,o&m,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l)|0;b=M;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (M=o,p)|0}function Hw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return Ib[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function Iw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Jb[a&15](b|0,c|0,d|0,e|0,f|0)}function Jw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return Kb[a&3](b|0,c|0,d|0,e|0,f|0,+g)|0}function Kw(a,b){a=a|0;b=b|0;Lb[a&255](b|0)}function Lw(a,b,c){a=a|0;b=b|0;c=c|0;Mb[a&127](b|0,c|0)}function Mw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Nb[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Nw(a,b){a=a|0;b=b|0;return Ob[a&127](b|0)|0}function Ow(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return Pb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function Pw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qb[a&63](b|0,c|0,d|0)|0}function Qw(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;Rb[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0,o|0,p|0)}function Rw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Sb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function Sw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Tb[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Tw(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;Ub[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function Uw(a,b,c){a=a|0;b=b|0;c=c|0;return Vb[a&63](b|0,c|0)|0}function Vw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Wb[a&31](b|0,c|0,d|0,e|0,f|0)|0}function Ww(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return +Xb[a&3](b|0,c|0,d|0)}function Xw(a){a=a|0;return Yb[a&15]()|0}function Yw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Zb[a&31](b|0,c|0,d|0,e|0)|0}function Zw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_b[a&15](b|0,c|0,d|0)}function _w(a){a=a|0;$b[a&7]()}function $w(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ac[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function ax(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return bc[a&7](b|0,c|0,d|0,e|0,+f)|0}function bx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;cc[a&63](b|0,c|0,d|0,e|0)}function cx(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;la(0);return 0}function dx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;la(1)}function ex(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;la(2);return 0}function fx(a){a=a|0;la(3)}function gx(a,b){a=a|0;b=b|0;la(4)}function hx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;la(5);return 0}function ix(a){a=a|0;la(6);return 0}function jx(a){a=a|0;return lb(a|0)|0}function kx(a){a=a|0;return Ab(a|0)|0}function lx(a){a=a|0;return qb(a|0)|0}function mx(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;la(7);return 0}function nx(a,b,c){a=a|0;b=b|0;c=c|0;la(8);return 0}function ox(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;la(9)}function px(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;la(10)}function qx(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;la(11)}function rx(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;la(12)}function sx(a,b){a=a|0;b=b|0;la(13);return 0}function tx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;la(14);return 0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;la(15);return 0.0}function vx(){la(16);return 0}function wx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;la(17);return 0}function xx(a,b,c){a=a|0;b=b|0;c=c|0;la(18)}function yx(a,b,c){a=a|0;b=b|0;c=c|0;ub(a|0,b|0,c|0)}function zx(){la(19)}function Ax(){yb()}function Bx(){eb()}function Cx(){vb()}function Dx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;la(20);return 0}function Ex(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;la(21);return 0}function Fx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;la(22)}\nfunction ni(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+32|0;h=l;Oi(h,255,0);j=a+152|0;if(((k[h+4>>2]|0)==(k[j>>2]|0)?(k[h+8>>2]|0)==(k[a+156>>2]|0):0)?(k[h+12>>2]|0)==(k[a+160>>2]|0):0){j=k[8900]|0;k[a+4580>>2]=j+(((k[8901]|0)-j|0)>>>1);r=l;return}c=a+4584|0;d=a+4588|0;e=k[d>>2]|0;b=k[c>>2]|0;f=e-b|0;if(f>>>0>=512){if(f>>>0>512?(g=b+512|0,(e|0)!=(g|0)):0)k[d>>2]=g}else{se(c,512-f|0);b=k[c>>2]|0}h=a+4580|0;k[h>>2]=b+256;g=a+160|0;e=a+156|0;f=-256;while(1){b=k[g>>2]|0;if((f|0)>(0-b|0)){c=k[e>>2]|0;if((f|0)>(0-c|0)){d=k[j>>2]|0;if((f|0)>(0-d|0))if((f|0)>=0){if((f|0)<1){i[(k[h>>2]|0)+f>>0]=0;f=1;continue}if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1}else b=-1;else b=-2}else b=-3}else b=-4;i[(k[h>>2]|0)+f>>0]=b;f=f+1|0;if((f|0)==256)break}r=l;return}function oi(a){a=a|0;var b=0,c=0;k[a>>2]=35660;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}a=a+88|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Lb[k[(k[b>>2]|0)+4>>2]&255](b);return}function pi(a){a=a|0;var b=0,c=0;k[a>>2]=35660;b=k[a+4608>>2]|0;if(b){c=a+4612|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}k[a>>2]=36736;b=k[a+92>>2]|0;if(b){c=a+96|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b)}c=a+88|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){mj(a);return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);mj(a);return}function qi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,y=0,z=0;u=r;r=r+352|0;v=u+328|0;y=u+192|0;c=u+343|0;d=u+342|0;e=u+341|0;f=u+340|0;o=u+176|0;h=u+168|0;j=u+160|0;l=u+152|0;t=u;q=u+136|0;if((k[a+28>>2]|0)!=0?(k[a+20>>2]|0)!=1:0){p=a+4|0;s=a+32|0;g=k[s>>2]|0;if(!g){a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[c>>0]|0;Ja(44,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}a=k[a+12>>2]|0;if((a|0)==8)switch(g|0){case 1:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[d>>0]|0;Ja(45,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[e>>0]|0;Ja(46,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(48)|0;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];i[v>>0]=i[f>>0]|0;Ja(47,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=y+56|0;e=y+4|0;k[y>>2]=36160;k[g>>2]=36180;x=0;ra(62,y+56|0,e|0);u=x;x=0;if(u&1){z=Wa()|0;qn(g);fb(z|0)}k[y+128>>2]=0;k[y+132>>2]=-1;k[y>>2]=36200;k[y+56>>2]=36220;x=0;qa(180,e|0);u=x;x=0;do if(u&1)a=Wa()|0;else{k[e>>2]=36236;f=y+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[y+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);u=x;x=0;if(u&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,y|0,49007,21)|0;v=x;x=0;do if((!(v&1)?(x=0,m=Aa(36,a|0,k[s>>2]|0)|0,v=x,x=0,!(v&1)):0)?(x=0,va(28,m|0,50997,18)|0,v=x,x=0,!(v&1)):0){d=Va(16)|0;x=0;ra(64,o|0,e|0);v=x;x=0;if(!(v&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,o|0);v=x;x=0;if(v&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(o);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=34;while(0);if((z|0)==34)a=Wa()|0;k[y>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}if((a|0)<=8){a=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,a|0,8,35648);z=x;x=0;if(!(z&1))ub(a|0,824,96);z=Wa()|0;Ua(a|0);fb(z|0)}c=16-a|0;switch(g|0){case 1:{a=lj(60)|0;k[h>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[h>>2];k[v+4>>2]=k[h+4>>2];Ja(41,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 2:{a=lj(60)|0;k[j>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[j>>2];k[v+4>>2]=k[j+4>>2];Ja(42,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}case 3:{a=lj(60)|0;k[l>>2]=c;x=0;k[y>>2]=k[b>>2];k[y+4>>2]=k[b+4>>2];k[y+8>>2]=k[b+8>>2];k[v>>2]=k[l>>2];k[v+4>>2]=k[l+4>>2];Ja(43,a|0,y|0,p|0,v|0);z=x;x=0;if(!(z&1)){z=a;r=u;return z|0}z=Wa()|0;mj(a);fb(z|0)}default:{g=t+56|0;e=t+4|0;k[t>>2]=36160;k[g>>2]=36180;x=0;ra(62,t+56|0,e|0);y=x;x=0;if(y&1){z=Wa()|0;qn(g);fb(z|0)}k[t+128>>2]=0;k[t+132>>2]=-1;k[t>>2]=36200;k[t+56>>2]=36220;x=0;qa(180,e|0);y=x;x=0;do if(y&1)a=Wa()|0;else{k[e>>2]=36236;f=t+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[t+52>>2]=16;k[v>>2]=0;k[v+4>>2]=0;k[v+8>>2]=0;x=0;ra(63,e|0,v|0);y=x;x=0;if(y&1){a=Wa()|0;Sm(v);Sm(f);xn(e);break}Sm(v);x=0;a=va(28,t|0,49007,21)|0;y=x;x=0;do if((!(y&1)?(x=0,n=Aa(36,a|0,k[s>>2]|0)|0,y=x,x=0,!(y&1)):0)?(x=0,va(28,n|0,50997,18)|0,y=x,x=0,!(y&1)):0){d=Va(16)|0;x=0;ra(64,q|0,e|0);y=x;x=0;if(!(y&1)){if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Ja(36,d|0,9,35648,q|0);y=x;x=0;if(y&1)c=1;else{x=0;Fa(6,d|0,824,96);x=0;c=0}a=Wa()|0;Sm(q);if(!c)break}else a=Wa()|0;Ua(d|0)}else z=64;while(0);if((z|0)==64)a=Wa()|0;k[t>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);z=a;fb(z|0)}while(0);z=a;qn(g);fb(z|0)}}}c=k[b+4>>2]|0;d=lj(16)|0;a=k[a+16>>2]|0;if(!c){z=k[b>>2]|0;k[d>>2]=36132;k[d+4>>2]=z;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}else{k[d>>2]=36108;k[d+4>>2]=c;k[d+8>>2]=1;k[d+12>>2]=a;z=d;r=u;return z|0}return 0}function ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0;g=r;r=r+32|0;l=g;Oi(l,k[a+128>>2]|0,k[a+136>>2]|0);h=k[b+4>>2]|0;f=k[b+8>>2]|0;f=(f|0)==0?k[l+8>>2]|0:f;e=k[b+12>>2]|0;e=(e|0)==0?k[l+12>>2]|0:e;c=k[b+16>>2]|0;d=k[l+16>>2]|0;k[a+176>>2]=(h|0)==0?k[l+4>>2]|0:h;k[a+180>>2]=f;k[a+184>>2]=e;zi(a);e=a+132|0;b=(k[e>>2]|0)+32|0;b=(b|0)<128?2:(b|0)/64|0;f=0;do{k[a+188+(f*12|0)>>2]=b;k[a+188+(f*12|0)+4>>2]=0;j[a+188+(f*12|0)+8>>1]=0;j[a+188+(f*12|0)+10>>1]=1;f=f+1|0}while((f|0)!=365);h=(k[e>>2]|0)+32|0;h=(h|0)<128?2:(h|0)/64|0;l=((c|0)==0?d:c)&255;k[a+4568>>2]=h;k[a+4572>>2]=0;i[a+4576>>0]=l;i[a+4577>>0]=1;i[a+4578>>0]=0;k[a+4580>>2]=h;k[a+4584>>2]=1;i[a+4588>>0]=l;i[a+4589>>0]=1;i[a+4590>>0]=0;k[a+4592>>2]=0;r=g;return}function si(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=a+88|0;f=k[b>>2]|0;k[b>>2]=0;b=k[g>>2]|0;k[g>>2]=f;if(b)Lb[k[(k[b>>2]|0)+4>>2]&255](b);g=d+4|0;f=k[g>>2]|0;i[a+4620>>0]=e&1;b=a+156|0;k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];k[b+12>>2]=k[c+12>>2];ee(a,d);ti(a);b=k[a+116>>2]|0;a=k[a+112>>2]|0;while(1){e=b+-1|0;c=(i[e>>0]|0)==-1?7:8;if((a|0)<(c|0))break;else{b=e;a=a-c|0}}b=b-f|0;e=k[g>>2]|0;if(!e)return;k[g>>2]=e+b;d=d+8|0;k[d>>2]=(k[d>>2]|0)-b;return}function ti(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0;A=r;r=r+32|0;C=A+12|0;z=A;h=a+172|0;y=(k[h>>2]|0)+4|0;if((k[a+28>>2]|0)==1)j=k[a+20>>2]|0;else j=1;b=ia(j<<1,y)|0;k[C>>2]=0;D=C+4|0;k[D>>2]=0;k[C+8>>2]=0;a:do if(b){if(!((b|0)<0?(x=0,qa(178,C|0),B=x,x=0,B&1):0))w=6;if((w|0)==6?(x=0,c=ta(67,b|0)|0,B=x,x=0,!(B&1)):0){k[D>>2]=c;k[C>>2]=c;k[C+8>>2]=c+b;while(1){i[c>>0]=0;c=(k[D>>2]|0)+1|0;k[D>>2]=c;b=b+-1|0;if(!b)break a}}c=Wa()|0;b=k[C>>2]|0;if(!b)fb(c|0);if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);fb(c|0)}while(0);k[z>>2]=0;B=z+4|0;k[B>>2]=0;k[z+8>>2]=0;do if(!j)w=19;else{if(!(j>>>0>1073741823?(x=0,qa(178,z|0),v=x,x=0,v&1):0))w=17;if((w|0)==17?(d=j<<2,x=0,e=ta(67,d|0)|0,v=x,x=0,!(v&1)):0){k[z>>2]=e;w=e+(j<<2)|0;k[z+8>>2]=w;sw(e|0,0,d|0)|0;k[B>>2]=w;w=19;break}c=Wa()|0;b=k[z>>2]|0;d=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}while(0);if((w|0)==19){l=a+8|0;b=k[l>>2]|0;b:do if((b|0)>0){m=a+4596|0;n=ia(j,y)|0;o=n+1|0;p=a+4600|0;q=a+160|0;s=a+168|0;t=a+164|0;u=a+156|0;v=a+88|0;g=a+4592|0;if((j|0)>0)f=0;else{f=0;while(1){e=k[C>>2]|0;c=e+1|0;k[m>>2]=c;d=e+o|0;k[p>>2]=d;if(!(f&1))c=o;else{k[m>>2]=d;k[p>>2]=c;c=1}j=k[q>>2]|0;if((j|0)<=(f|0)?(f|0)<((k[s>>2]|0)+j|0):0){j=k[v>>2]|0;x=0;Ja(k[(k[j>>2]|0)+8>>2]|0,j|0,e+(c+((k[u>>2]|0)-n))|0,k[t>>2]|0,y|0);j=x;x=0;if(j&1)break;b=k[l>>2]|0}f=f+1|0;if((f|0)>=(b|0)){w=50;break b}}c=Wa()|0;break}c:while(1){c=k[C>>2]|0;b=c+1|0;k[m>>2]=b;c=c+o|0;k[p>>2]=c;if(f&1){k[m>>2]=c;k[p>>2]=b;b=c}e=k[z>>2]|0;c=b;d=0;do{k[g>>2]=k[e+(d<<2)>>2];w=k[h>>2]|0;i[c+w>>0]=i[c+(w+-1)>>0]|0;i[(k[p>>2]|0)+-1>>0]=i[k[m>>2]>>0]|0;x=0;ra(83,a|0,0);w=x;x=0;if(w&1){w=38;break c}e=k[z>>2]|0;k[e+(d<<2)>>2]=k[g>>2];c=(k[m>>2]|0)+y|0;k[m>>2]=c;b=k[p>>2]|0;k[p>>2]=b+y;d=d+1|0}while((d|0)<(j|0));w=k[q>>2]|0;if(((w|0)<=(f|0)?(f|0)<((k[s>>2]|0)+w|0):0)?(w=k[v>>2]|0,x=0,Ja(k[(k[w>>2]|0)+8>>2]|0,w|0,b+(y+((k[u>>2]|0)-n))|0,k[t>>2]|0,y|0),w=x,x=0,w&1):0){w=30;break}f=f+1|0;if((f|0)>=(k[l>>2]|0)){w=50;break b}}if((w|0)==30){c=Wa()|0;break}else if((w|0)==38){c=Wa()|0;break}}else w=50;while(0);do if((w|0)==50){x=0;qa(183,a|0);a=x;x=0;if(a&1){c=Wa()|0;break}b=k[z>>2]|0;c=b;if(b){d=k[B>>2]|0;if((d|0)!=(b|0))k[B>>2]=d+(~((d+-4-c|0)>>>2)<<2);mj(b)}b=k[C>>2]|0;if(!b){r=A;return}if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);r=A;return}while(0);b=k[z>>2]|0;d=b;if(b){e=k[B>>2]|0;if((e|0)!=(b|0))k[B>>2]=e+(~((e+-4-d|0)>>>2)<<2);mj(b)}}b=k[C>>2]|0;if(!b)fb(c|0);if((k[D>>2]|0)!=(b|0))k[D>>2]=b;mj(b);fb(c|0)}function ui(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=a+4596|0;c=k[p>>2]|0;t=a+172|0;b=k[t>>2]|0;if((b|0)<=0)return;q=a+4600|0;r=a+4604|0;s=a+4592|0;h=c;f=l[c+-1>>0]|0;c=l[c>>0]|0;o=0;while(1){m=k[q>>2]|0;g=i[m+(o+-1)>>0]|0;n=g&255;e=o+1|0;d=l[h+e>>0]|0;j=k[r>>2]|0;h=c-f|0;f=f-n|0;j=((((i[j+(d-c)>>0]|0)*9|0)+(i[j+h>>0]|0)|0)*9|0)+(i[j+f>>0]|0)|0;m=m+o|0;if(!j){b=wi(a,g,m,b-o|0)|0;c=b+o|0;if((c|0)!=(k[t>>2]|0)){n=xi(a,n,l[(k[p>>2]|0)+c>>0]|0)|0;i[(k[q>>2]|0)+c>>0]=n;n=k[s>>2]|0;k[s>>2]=(n|0)<1?0:n+-1|0;b=b+1|0}e=b+o|0;d=k[p>>2]|0;c=l[d+(e+-1)>>0]|0;d=l[d+e>>0]|0}else{b=c-n>>31;if((b^f|0)<0)b=c;else b=n+((b^h|0)<0?0:h)|0;n=vi(a,j,l[m>>0]|0,b,0)|0;i[(k[q>>2]|0)+o>>0]=n}b=k[t>>2]|0;if((b|0)<=(e|0))break;h=k[p>>2]|0;f=c;c=d;o=e}return}function vi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b>>31;l=(r^b)-r|0;p=a+188+(l*12|0)+10|0;c=j[p>>1]|0;o=a+188+(l*12|0)|0;e=k[o>>2]|0;if((c|0)<(e|0))if((c<<1|0)<(e|0))if((c<<2|0)<(e|0))if((c<<3|0)<(e|0))if((c<<4|0)<(e|0)){b=5;while(1)if((c<>1]^r)-r+d|0;q=a+128|0;e=k[q>>2]|0;if((c&e|0)==(c|0))m=c;else m=e&~(c>>31);c=a+112|0;if((k[c>>2]|0)<8)qe(a);e=a+108|0;d=k[e>>2]|0;f=d>>>24;g=k[2832+(b<<11)+(f<<3)+4>>2]|0;if(!g){h=k[a+148>>2]|0;e=k[a+140>>2]|0;c=Tg(a)|0;if((c|0)<(h+-1-e|0)){if(b)c=(Ug(a,b)|0)+(c<>31^c>>1;if((((c|0)>-1?c:0-c|0)|0)>65535){c=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,c|0,5,35648);a=x;x=0;if(a&1){a=Wa()|0;Ua(c|0);fb(a|0)}else ub(c|0,824,96)}}else{k[c>>2]=(k[c>>2]|0)-g;k[e>>2]=d<>2]|0}h=a+136|0;d=k[h>>2]|0;if(!b){if(!d)e=(k[a+188+(l*12|0)+4>>2]<<1)+-1+(j[p>>1]|0)>>31;else e=0;g=e^c}else g=c;b=k[a+152>>2]|0;e=(k[o>>2]|0)+((g|0)>-1?g:0-g|0)|0;f=a+188+(l*12|0)+4|0;c=(k[f>>2]|0)+(ia(d<<1|1,g)|0)|0;d=j[p>>1]|0;if((d|0)==(b|0)){e=e>>1;c=c>>1;d=b>>1}k[o>>2]=e;b=d+1|0;j[p>>1]=b;e=b+c|0;if((e|0)>=1){if((c|0)>0){c=c-b|0;p=j[n>>1]|0;j[n>>1]=(p<<16>>16<127&1)+(p&65535);c=(c|0)>0?0:c}}else{c=j[n>>1]|0;j[n>>1]=(c&65535)-(c<<16>>16>-128&1);c=(e|0)>(~d|0)?e:0-d|0}k[f>>2]=c;b=k[h>>2]|0;d=b<<1|1;e=(ia(d,(g^r)-r|0)|0)+m|0;if((e|0)>=(0-b|0)){c=k[q>>2]|0;if((c+b|0)<(e|0))e=e-(ia(k[a+132>>2]|0,d)|0)|0}else{e=(ia(k[a+132>>2]|0,d)|0)+e|0;c=k[q>>2]|0}if((e&c|0)==(e|0)){a=e;a=a&255;return a|0}a=c&~(e>>31);a=a&255;return a|0}function wi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;h=a+112|0;j=a+108|0;l=a+4592|0;e=k[h>>2]|0;f=0;while(1){if((e|0)<1){qe(a);e=k[h>>2]|0}g=k[j>>2]|0;e=e+-1|0;k[h>>2]=e;k[j>>2]=g<<1;if((g|0)>=0){m=8;break}g=k[l>>2]|0;n=1<>2];o=d-f|0;o=(n|0)<(o|0)?n:o;f=o+f|0;if((o|0)==(n|0))k[l>>2]=(g|0)>30?31:g+1|0;if((f|0)==(d|0)){e=d;break}}if((m|0)==8)if((f|0)!=(d|0)){e=k[l>>2]|0;if((e+-4|0)>>>0<28)e=Ug(a,k[36476+(e<<2)>>2]|0)|0;else e=0;e=e+f|0;if((e|0)>(d|0)){e=Va(16)|0;if((i[8]|0)==0?(Qa(8)|0)!=0:0){tb(72,35648,w|0)|0;Ya(8)}x=0;Fa(7,e|0,5,35648);o=x;x=0;if(o&1){o=Wa()|0;Ua(e|0);fb(o|0)}else ub(e|0,824,96)}}else e=d;if((e|0)<=0)return e|0;sw(c|0,b|0,e|0)|0;return e|0}function xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b-c|0;g=a+128|0;d=a+136|0;if((((f|0)>-1?f:0-f|0)|0)>(k[d>>2]|0)){b=ia(yi(a,a+4568|0)|0,c-b>>31|1)|0;e=k[d>>2]|0;f=e<<1|1;b=(ia(b,f)|0)+c|0;if((b|0)>=(0-e|0)){d=k[g>>2]|0;if((d+e|0)<(b|0))b=b-(ia(k[a+132>>2]|0,f)|0)|0}else{b=(ia(k[a+132>>2]|0,f)|0)+b|0;d=k[g>>2]|0}if((b&d|0)==(b|0)){a=b;a=a&255;return a|0}a=d&~(b>>31);a=a&255;return a|0}else{c=yi(a,a+4580|0)|0;f=k[d>>2]|0;e=f<<1|1;b=(ia(e,c)|0)+b|0;if((b|0)>=(0-f|0)){d=k[g>>2]|0;if((d+f|0)<(b|0))b=b-(ia(k[a+132>>2]|0,e)|0)|0}else{b=(ia(k[a+132>>2]|0,e)|0)+b|0;d=k[g>>2]|0}if((b&d|0)==(b|0)){a=b;a=a&255;return a|0}a=d&~(b>>31);a=a&255;return a|0}return 0}function yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0;m=b+9|0;c=l[m>>0]|0;f=b+4|0;e=(ia(c>>>1,k[f>>2]|0)|0)+(k[b>>2]|0)|0;if((c|0)<(e|0)){d=0;do{c=c<<1;d=d+1|0}while((c|0)<(e|0))}else d=0;g=k[a+148>>2]|0;h=k[36476+(k[a+4592>>2]<<2)>>2]|0;c=k[a+140>>2]|0;e=Tg(a)|0;do if((e|0)<(g+-2-h-c|0))if(!d){d=k[f>>2]|0;a=d+e|0;c=a&1;a=(c+a|0)/2|0;j=8;break}else{h=(Ug(a,d)|0)+(e<>2]|0;e=h+d|0;g=e&1;c=g;f=1;e=(g+e|0)/2|0;break}else{e=(Ug(a,c)|0)+1|0;g=k[f>>2]|0;a=e+g|0;c=a&1;a=(c+a|0)/2|0;if(!d){d=g;j=8}else{h=e;f=1;e=a;d=g}}while(0);if((j|0)==8){h=e;f=l[b+10>>0]<<1>>>0>=(l[m>>0]|0)>>>0;e=a}e=(c|0)!=0^f?e:0-e|0;if((e|0)<0){j=b+10|0;i[j>>0]=(l[j>>0]|0)+1}c=(h+1-d>>1)+(k[b>>2]|0)|0;k[b>>2]=c;d=i[m>>0]|0;if(d<<24>>24!=(i[b+8>>0]|0)){b=d;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}k[b>>2]=c>>1;j=(d&255)>>>1;i[m>>0]=j;b=b+10|0;i[b>>0]=(l[b>>0]|0)>>>1;b=j;b=b&255;b=b+1|0;b=b&255;i[m>>0]=b;return e|0}function zi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;d=o;n=a+136|0;a:do if(!(k[n>>2]|0)){c=k[a+128>>2]|0;b=a+144|0;if((((c|0)==((1<>2])+-1|0)?(Oi(d,c,0),(k[d+4>>2]|0)==(k[a+176>>2]|0)):0)?(k[d+8>>2]|0)==(k[a+180>>2]|0):0)?(k[d+12>>2]|0)==(k[a+184>>2]|0):0)switch(k[b>>2]|0){case 8:{n=k[8900]|0;k[a+4604>>2]=n+(((k[8901]|0)-n|0)>>>1);r=o;return}case 10:{n=k[8903]|0;k[a+4604>>2]=n+(((k[8904]|0)-n|0)>>>1);r=o;return}case 12:{n=k[8906]|0;k[a+4604>>2]=n+(((k[8907]|0)-n|0)>>>1);r=o;return}case 16:{n=k[8909]|0;k[a+4604>>2]=n+(((k[8910]|0)-n|0)>>>1);r=o;return}default:break a}}else b=a+144|0;while(0);m=1<>2];c=a+4608|0;d=m<<1;e=a+4612|0;f=k[e>>2]|0;b=k[c>>2]|0;g=f-b|0;if(d>>>0<=g>>>0){if(d>>>0>>0?(h=b+d|0,(f|0)!=(h|0)):0)k[e>>2]=h}else{se(c,d-g|0);b=k[c>>2]|0}l=a+4604|0;k[l>>2]=b+m;b=0-m|0;if((m|0)<=(b|0)){r=o;return}h=a+184|0;j=a+180|0;g=a+176|0;f=b;do{b=k[h>>2]|0;if((f|0)>(0-b|0)){c=k[j>>2]|0;if((f|0)>(0-c|0)){d=k[g>>2]|0;if((f|0)>(0-d|0)){e=k[n>>2]|0;if((f|0)>=(0-e|0))if((e|0)<(f|0))if((d|0)<=(f|0))if((c|0)>(f|0))b=2;else b=(b|0)>(f|0)?3:4;else b=1;else b=0;else b=-1}else b=-2}else b=-3}else b=-4;i[(k[l>>2]|0)+f>>0]=b;f=f+1|0}while((f|0)!=(m|0));r=o;return}function Ai(a){a=a|0;mj(a);return}function Bi(a){a=a|0;return 50767}function Ci(a,b,c){a=a|0;b=b|0;c=c|0;Qm(a,50754,12);return}function Di(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;q=r;r=r+16|0;s=q;k[s>>2]=0;t=s+4|0;k[t>>2]=0;k[s+8>>2]=0;o=s+8|0;x=0;e=ta(67,1)|0;n=x;x=0;a:do if((!(n&1)?(n=e+1|0,i[e>>0]=c,k[s>>2]=e,k[t>>2]=n,k[o>>2]=n,x=0,ra(84,s|0,b&65535|0),n=x,x=0,!(n&1)):0)?(x=0,ra(84,s|0,a&65535|0),n=x,x=0,!(n&1)):0){l=d&255;e=k[t>>2]|0;c=k[o>>2]|0;if(e>>>0>=c>>>0){b=k[s>>2]|0;a=b;g=e-a+1|0;if((g|0)<0){x=0;qa(178,s|0);n=x;x=0;if(n&1){p=52;break}a=k[s>>2]|0;c=k[o>>2]|0;b=a}j=b;e=c-j|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;c=k[t>>2]|0;h=c-j|0;if(!e){e=0;g=0}else p=12}else{h=k[t>>2]|0;e=2147483647;c=h;h=h-j|0;p=12}if((p|0)==12){x=0;g=ta(67,e|0)|0;n=x;x=0;if(n&1){p=52;break}}i[g+h>>0]=l;m=c-j|0;n=g+(h-m)|0;vw(n|0,b|0,m|0)|0;k[s>>2]=n;k[t>>2]=g+(h+1);k[o>>2]=g+e;if(a)mj(a)}else{i[e>>0]=l;k[t>>2]=(k[t>>2]|0)+1}b:do if((d|0)>0){n=0;while(1){n=n+1|0;m=n&255;e=k[t>>2]|0;b=k[o>>2]|0;if(e>>>0>=b>>>0){a=k[s>>2]|0;c=a;g=e-c+1|0;if((g|0)<0){x=0;qa(178,s|0);l=x;x=0;if(l&1)break;a=k[s>>2]|0;c=a;b=k[o>>2]|0}l=a;e=b-l|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;b=k[t>>2]|0;h=b-l|0;if(!e){j=0;g=0}else p=25}else{h=k[t>>2]|0;e=2147483647;b=h;h=h-l|0;p=25}if((p|0)==25){p=0;x=0;g=ta(67,e|0)|0;j=x;x=0;if(j&1)break;else j=e}i[g+h>>0]=m;e=g+(h+1)|0;l=b-l|0;m=g+(h-l)|0;vw(m|0,a|0,l|0)|0;k[s>>2]=m;k[t>>2]=e;k[o>>2]=g+j;if(c){mj(c);e=k[t>>2]|0}}else{i[e>>0]=m;e=(k[t>>2]|0)+1|0;k[t>>2]=e}c=k[o>>2]|0;if(e>>>0>=c>>>0){b=k[s>>2]|0;a=b;g=e-a+1|0;if((g|0)<0){x=0;qa(178,s|0);m=x;x=0;if(m&1)break;a=k[s>>2]|0;c=k[o>>2]|0;b=a}l=b;e=c-l|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;g=k[t>>2]|0;h=g-l|0;if(!e){j=0;c=0}else p=36}else{h=k[t>>2]|0;e=2147483647;g=h;h=h-l|0;p=36}if((p|0)==36){p=0;x=0;c=ta(67,e|0)|0;m=x;x=0;if(m&1)break;else j=e}i[c+h>>0]=17;e=c+(h+1)|0;l=g-l|0;m=c+(h-l)|0;vw(m|0,b|0,l|0)|0;k[s>>2]=m;k[t>>2]=e;k[o>>2]=c+j;if(a){mj(a);e=k[t>>2]|0}}else{i[e>>0]=17;e=(k[t>>2]|0)+1|0;k[t>>2]=e}c=k[o>>2]|0;if(e>>>0>=c>>>0){b=k[s>>2]|0;a=b;g=e-a+1|0;if((g|0)<0){x=0;qa(178,s|0);m=x;x=0;if(m&1)break;a=k[s>>2]|0;c=k[o>>2]|0;b=a}j=b;e=c-j|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;c=k[t>>2]|0;h=c-j|0;if(!e){e=0;g=0}else p=48}else{h=k[t>>2]|0;e=2147483647;c=h;h=h-j|0;p=48}if((p|0)==48){p=0;x=0;g=ta(67,e|0)|0;m=x;x=0;if(m&1)break}i[g+h>>0]=0;l=c-j|0;m=g+(h-l)|0;vw(m|0,b|0,l|0)|0;k[s>>2]=m;k[t>>2]=g+(h+1);k[o>>2]=g+e;if(a)mj(a)}else{i[e>>0]=0;k[t>>2]=(k[t>>2]|0)+1}if((n|0)>=(d|0))break b}f=Wa()|0;break a}while(0);x=0;h=ta(67,20)|0;d=x;x=0;if(!(d&1)){k[h>>2]=36800;i[h+4>>0]=-9;a=h+8|0;k[a>>2]=0;g=h+12|0;k[g>>2]=0;c=h+16|0;k[c>>2]=0;e=k[t>>2]|0;d=k[s>>2]|0;b=e-d|0;do if((e|0)!=(d|0)){if(!((b|0)<0?(x=0,qa(178,a|0),d=x,x=0,d&1):0))p=62;if((p|0)==62?(x=0,f=ta(67,b|0)|0,d=x,x=0,!(d&1)):0){k[g>>2]=f;k[a>>2]=f;k[c>>2]=f+b;e=k[s>>2]|0;c=k[t>>2]|0;if((e|0)==(c|0))break;do{i[f>>0]=i[e>>0]|0;f=(k[g>>2]|0)+1|0;k[g>>2]=f;e=e+1|0}while((e|0)!=(c|0));e=k[s>>2]|0;break}f=Wa()|0;e=k[a>>2]|0;if(e){if((k[g>>2]|0)!=(e|0))k[g>>2]=e;mj(e)}mj(h);break a}while(0);if(!e){r=q;return h|0}if((k[t>>2]|0)!=(e|0))k[t>>2]=e;mj(e);r=q;return h|0}else p=52}else p=52;while(0);if((p|0)==52)f=Wa()|0;e=k[s>>2]|0;if(!e)fb(f|0);if((k[t>>2]|0)!=(e|0))k[t>>2]=e;mj(e);fb(f|0);return 0}function Ei(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,y=0;t=r;r=r+32|0;p=t+28|0;v=t+16|0;s=t+4|0;q=t;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;n=lj(5)|0;k[v>>2]=n;o=v+8|0;k[o>>2]=n+5;i[n>>0]=74;i[n+1>>0]=70;i[n+2>>0]=73;i[n+3>>0]=70;i[n+4>>0]=0;k[w>>2]=n+5;x=0;ra(84,v|0,k[a>>2]&65535|0);n=x;x=0;a:do if(!(n&1)){l=k[a+4>>2]&255;b=k[w>>2]|0;d=k[o>>2]|0;if(b>>>0>=d>>>0){e=k[v>>2]|0;f=e;g=b-f+1|0;if((g|0)<0){x=0;qa(178,v|0);n=x;x=0;if(n&1){u=43;break}f=k[v>>2]|0;d=k[o>>2]|0;e=f}j=e;b=d-j|0;if(b>>>0<1073741823){b=b<<1;b=b>>>0>>0?g:b;d=k[w>>2]|0;h=d-j|0;if(!b){b=0;g=0}else u=10}else{h=k[w>>2]|0;b=2147483647;d=h;h=h-j|0;u=10}if((u|0)==10){x=0;g=ta(67,b|0)|0;n=x;x=0;if(n&1){u=43;break}}i[g+h>>0]=l;m=d-j|0;n=g+(h-m)|0;vw(n|0,e|0,m|0)|0;k[v>>2]=n;k[w>>2]=g+(h+1);k[o>>2]=g+b;if(f)mj(f)}else{i[b>>0]=l;k[w>>2]=(k[w>>2]|0)+1}x=0;ra(84,v|0,k[a+8>>2]&65535|0);n=x;x=0;if(!(n&1)?(x=0,ra(84,v|0,k[a+12>>2]&65535|0),n=x,x=0,!(n&1)):0){n=a+16|0;m=k[n>>2]&255;b=k[w>>2]|0;e=k[o>>2]|0;if(b>>>0>=e>>>0){f=k[v>>2]|0;d=f;g=b-d+1|0;if((g|0)<0){x=0;qa(178,v|0);l=x;x=0;if(l&1){u=43;break}f=k[v>>2]|0;d=f;e=k[o>>2]|0}l=f;b=e-l|0;if(b>>>0<1073741823){b=b<<1;b=b>>>0>>0?g:b;g=k[w>>2]|0;h=g-l|0;if(!b){j=0;e=0}else u=23}else{h=k[w>>2]|0;b=2147483647;g=h;h=h-l|0;u=23}if((u|0)==23){x=0;e=ta(67,b|0)|0;j=x;x=0;if(j&1){u=43;break}else j=b}i[e+h>>0]=m;b=e+(h+1)|0;l=g-l|0;m=e+(h-l)|0;vw(m|0,f|0,l|0)|0;k[v>>2]=m;k[w>>2]=b;k[o>>2]=e+j;if(d){mj(d);b=k[w>>2]|0}}else{i[b>>0]=m;b=(k[w>>2]|0)+1|0;k[w>>2]=b}m=a+20|0;l=k[m>>2]&255;d=k[o>>2]|0;if(b>>>0>=d>>>0){e=k[v>>2]|0;f=e;g=b-f+1|0;if((g|0)<0){x=0;qa(178,v|0);j=x;x=0;if(j&1){u=43;break}f=k[v>>2]|0;d=k[o>>2]|0;e=f}j=e;b=d-j|0;if(b>>>0<1073741823){b=b<<1;b=b>>>0>>0?g:b;d=k[w>>2]|0;h=d-j|0;if(!b){b=0;g=0}else u=34}else{h=k[w>>2]|0;b=2147483647;d=h;h=h-j|0;u=34}if((u|0)==34){x=0;g=ta(67,b|0)|0;y=x;x=0;if(y&1){u=43;break}}i[g+h>>0]=l;l=d-j|0;y=g+(h-l)|0;vw(y|0,e|0,l|0)|0;k[v>>2]=y;k[w>>2]=g+(h+1);k[o>>2]=g+b;if(f)mj(f)}else{i[b>>0]=l;k[w>>2]=(k[w>>2]|0)+1}b=k[n>>2]|0;do if((b|0)>0){if(!(k[a+24>>2]|0)){k[q>>2]=k[w>>2];y=0+(ia(b*3|0,k[m>>2]|0)|0)|0;x=0;k[p>>2]=k[q>>2];Ea(15,v|0,p|0,0,y|0)|0;y=x;x=0;if(y&1){u=43;break a}else break}d=Va(16)|0;x=0;Fa(5,s|0,50792,57);y=x;x=0;if(!(y&1)){x=0;b=Da(1)|0;y=x;x=0;if(!(y&1)?(x=0,Ja(36,d|0,1,b|0,s|0),y=x,x=0,!(y&1)):0){x=0;Fa(6,d|0,824,96);x=0;c=0}else c=1;b=Wa()|0;Sm(s);if(!c){c=b;break a}}else b=Wa()|0;Ua(d|0);c=b;break a}while(0);x=0;h=ta(67,20)|0;y=x;x=0;if(!(y&1)){k[h>>2]=36800;i[h+4>>0]=-32;f=h+8|0;k[f>>2]=0;g=h+12|0;k[g>>2]=0;d=h+16|0;k[d>>2]=0;b=k[w>>2]|0;y=k[v>>2]|0;e=b-y|0;do if((b|0)!=(y|0)){if(!((e|0)<0?(x=0,qa(178,f|0),y=x,x=0,y&1):0))u=53;if((u|0)==53?(x=0,c=ta(67,e|0)|0,y=x,x=0,!(y&1)):0){k[g>>2]=c;k[f>>2]=c;k[d>>2]=c+e;b=k[v>>2]|0;d=k[w>>2]|0;if((b|0)==(d|0))break;do{i[c>>0]=i[b>>0]|0;c=(k[g>>2]|0)+1|0;k[g>>2]=c;b=b+1|0}while((b|0)!=(d|0));b=k[v>>2]|0;break}b=Wa()|0;c=k[f>>2]|0;if(c){if((k[g>>2]|0)!=(c|0))k[g>>2]=c;mj(c)}mj(h);u=44;break a}while(0);if(!b){r=t;return h|0}if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);r=t;return h|0}else u=43}else u=43}else u=43;while(0);if((u|0)==43){b=Wa()|0;u=44}if((u|0)==44)c=b;b=k[v>>2]|0;if(!b)fb(c|0);if((k[w>>2]|0)!=(b|0))k[w>>2]=b;mj(b);fb(c|0);return 0}function Fi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;h=r;r=r+16|0;l=h;k[l>>2]=0;m=l+4|0;k[m>>2]=0;k[l+8>>2]=0;x=0;b=ta(67,1)|0;g=x;x=0;a:do if((((((!(g&1)?(g=b+1|0,i[b>>0]=1,k[l>>2]=b,k[m>>2]=g,k[l+8>>2]=g,x=0,ra(84,l|0,k[a>>2]&65535|0),g=x,x=0,!(g&1)):0)?(x=0,ra(84,l|0,k[a+4>>2]&65535|0),g=x,x=0,!(g&1)):0)?(x=0,ra(84,l|0,k[a+8>>2]&65535|0),g=x,x=0,!(g&1)):0)?(x=0,ra(84,l|0,k[a+12>>2]&65535|0),g=x,x=0,!(g&1)):0)?(x=0,ra(84,l|0,k[a+16>>2]&65535|0),g=x,x=0,!(g&1)):0)?(x=0,j=ta(67,20)|0,g=x,x=0,!(g&1)):0){k[j>>2]=36800;i[j+4>>0]=-8;e=j+8|0;k[e>>2]=0;g=j+12|0;k[g>>2]=0;a=j+16|0;k[a>>2]=0;b=k[m>>2]|0;n=k[l>>2]|0;d=b-n|0;do if((b|0)!=(n|0)){if(!((d|0)<0?(x=0,qa(178,e|0),n=x,x=0,n&1):0))f=11;if((f|0)==11?(x=0,c=ta(67,d|0)|0,n=x,x=0,!(n&1)):0){k[g>>2]=c;k[e>>2]=c;k[a>>2]=c+d;b=k[l>>2]|0;a=k[m>>2]|0;if((b|0)==(a|0))break;do{i[c>>0]=i[b>>0]|0;c=(k[g>>2]|0)+1|0;k[g>>2]=c;b=b+1|0}while((b|0)!=(a|0));b=k[l>>2]|0;break}c=Wa()|0;b=k[e>>2]|0;if(b){if((k[g>>2]|0)!=(b|0))k[g>>2]=b;mj(b)}mj(j);break a}while(0);if(!b){r=h;return j|0}if((k[m>>2]|0)!=(b|0))k[m>>2]=b;mj(b);r=h;return j|0}else f=25;while(0);if((f|0)==25)c=Wa()|0;b=k[l>>2]|0;if(!b)fb(c|0);if((k[m>>2]|0)!=(b|0))k[m>>2]=b;mj(b);fb(c|0);return 0}function Gi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;f=lj(5)|0;i[f>>0]=109;i[f+1>>0]=114;i[f+2>>0]=102;i[f+3>>0]=120;i[f+4>>0]=a;x=0;e=ta(67,20)|0;d=x;x=0;if(d&1){e=Wa()|0;mj(f);fb(e|0)}k[e>>2]=36800;i[e+4>>0]=-24;a=e+8|0;k[a>>2]=0;b=e+12|0;k[b>>2]=0;c=e+16|0;k[c>>2]=0;x=0;d=ta(67,5)|0;g=x;x=0;if(!(g&1)){k[b>>2]=d;k[a>>2]=d;k[c>>2]=d+5;i[d>>0]=109;g=(k[b>>2]|0)+1|0;k[b>>2]=g;d=f+1|0;i[g>>0]=i[d>>0]|0;g=(k[b>>2]|0)+1|0;k[b>>2]=g;d=d+1|0;i[g>>0]=i[d>>0]|0;g=(k[b>>2]|0)+1|0;k[b>>2]=g;d=d+1|0;i[g>>0]=i[d>>0]|0;g=(k[b>>2]|0)+1|0;k[b>>2]=g;i[g>>0]=i[d+1>>0]|0;k[b>>2]=(k[b>>2]|0)+1;mj(f);return e|0}g=Wa()|0;mj(e);mj(f);fb(g|0);return 0}function Hi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;u=r;r=r+16|0;v=u;k[v>>2]=0;w=v+4|0;k[w>>2]=0;k[v+8>>2]=0;s=v+8|0;x=0;e=ta(67,1)|0;q=x;x=0;a:do if(!(q&1)){h=e+1|0;q=h;i[e>>0]=b;k[v>>2]=e;k[w>>2]=q;k[s>>2]=q;if((b|0)>0){g=h;q=0;do{p=q+a&255;if(g>>>0>=h>>>0){e=k[v>>2]|0;j=e;g=g-j+1|0;if((g|0)<0){x=0;qa(178,v|0);o=x;x=0;if(o&1){t=28;break}j=k[v>>2]|0;h=k[s>>2]|0;o=j}else o=e;n=o;e=h-n|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;h=k[w>>2]|0;l=h-n|0;if(!e){m=0;g=0}else t=13}else{l=k[w>>2]|0;e=2147483647;h=l;l=l-n|0;t=13}if((t|0)==13){t=0;x=0;g=ta(67,e|0)|0;m=x;x=0;if(m&1){t=28;break}else m=e}i[g+l>>0]=p;e=g+(l+1)|0;n=h-n|0;p=g+(l-n)|0;vw(p|0,o|0,n|0)|0;k[v>>2]=p;k[w>>2]=e;k[s>>2]=g+m;if(j){mj(j);e=k[w>>2]|0}}else{i[g>>0]=p;e=(k[w>>2]|0)+1|0;k[w>>2]=e}h=k[s>>2]|0;if(e>>>0>=h>>>0){j=k[v>>2]|0;g=j;l=e-g+1|0;if((l|0)<0){x=0;qa(178,v|0);p=x;x=0;if(p&1){t=28;break}j=k[v>>2]|0;g=j;h=k[s>>2]|0}n=j;e=h-n|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?l:e;l=k[w>>2]|0;h=l-n|0;if(!e){e=0;m=0}else t=24}else{h=k[w>>2]|0;e=2147483647;l=h;h=h-n|0;t=24}if((t|0)==24){t=0;x=0;m=ta(67,e|0)|0;p=x;x=0;if(p&1){t=28;break}}i[m+h>>0]=0;o=l-n|0;p=m+(h-o)|0;vw(p|0,j|0,o|0)|0;k[v>>2]=p;k[w>>2]=m+(h+1);k[s>>2]=m+e;if(g)mj(g)}else{i[e>>0]=0;k[w>>2]=(k[w>>2]|0)+1}q=q+1|0;g=k[w>>2]|0;h=k[s>>2]|0}while((q|0)<(b|0));if((t|0)==28){f=Wa()|0;break}e=c&255;if(g>>>0>>0){i[g>>0]=e;g=(k[w>>2]|0)+1|0;k[w>>2]=g}else t=37}else{g=h;e=c&255;t=37}if((t|0)==37){j=k[v>>2]|0;l=j;m=g-l+1|0;if((m|0)<0){x=0;qa(178,v|0);c=x;x=0;if(c&1){t=29;break}l=k[v>>2]|0;h=k[s>>2]|0;j=l}p=j;g=h-p|0;if(g>>>0<1073741823){g=g<<1;g=g>>>0>>0?m:g;m=k[w>>2]|0;n=m-p|0;if(!g){o=0;h=0}else t=43}else{n=k[w>>2]|0;g=2147483647;m=n;n=n-p|0;t=43}if((t|0)==43){x=0;h=ta(67,g|0)|0;c=x;x=0;if(c&1){t=29;break}else o=g}i[h+n>>0]=e;g=h+(n+1)|0;a=m-p|0;c=h+(n-a)|0;vw(c|0,j|0,a|0)|0;k[v>>2]=c;k[w>>2]=g;k[s>>2]=h+o;if(l){mj(l);g=k[w>>2]|0}}p=d&255;e=k[s>>2]|0;if(g>>>0>=e>>>0){h=k[v>>2]|0;j=h;g=g-j+1|0;if((g|0)<0){x=0;qa(178,v|0);d=x;x=0;if(d&1){t=29;break}j=k[v>>2]|0;e=k[s>>2]|0;h=j}o=h;e=e-o|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?g:e;l=k[w>>2]|0;m=l-o|0;if(!e){n=0;g=0}else t=54}else{m=k[w>>2]|0;e=2147483647;l=m;m=m-o|0;t=54}if((t|0)==54){x=0;g=ta(67,e|0)|0;d=x;x=0;if(d&1){t=29;break}else n=e}i[g+m>>0]=p;e=g+(m+1)|0;c=l-o|0;d=g+(m-c)|0;vw(d|0,h|0,c|0)|0;k[v>>2]=d;k[w>>2]=e;k[s>>2]=g+n;if(j){mj(j);e=k[w>>2]|0}}else{i[g>>0]=p;e=(k[w>>2]|0)+1|0;k[w>>2]=e}g=k[s>>2]|0;if(e>>>0>=g>>>0){h=k[v>>2]|0;j=h;l=e-j+1|0;if((l|0)<0){x=0;qa(178,v|0);d=x;x=0;if(d&1){t=29;break}j=k[v>>2]|0;g=k[s>>2]|0;h=j}n=h;e=g-n|0;if(e>>>0<1073741823){e=e<<1;e=e>>>0>>0?l:e;g=k[w>>2]|0;m=g-n|0;if(!e){e=0;l=0}else t=65}else{m=k[w>>2]|0;e=2147483647;g=m;m=m-n|0;t=65}if((t|0)==65){x=0;l=ta(67,e|0)|0;d=x;x=0;if(d&1){t=29;break}}i[l+m>>0]=0;c=g-n|0;d=l+(m-c)|0;vw(d|0,h|0,c|0)|0;k[v>>2]=d;k[w>>2]=l+(m+1);k[s>>2]=l+e;if(j)mj(j)}else{i[e>>0]=0;k[w>>2]=(k[w>>2]|0)+1}x=0;m=ta(67,20)|0;s=x;x=0;if(!(s&1)){k[m>>2]=36800;i[m+4>>0]=-38;j=m+8|0;k[j>>2]=0;l=m+12|0;k[l>>2]=0;g=m+16|0;k[g>>2]=0;e=k[w>>2]|0;s=k[v>>2]|0;h=e-s|0;do if((e|0)!=(s|0)){if(!((h|0)<0?(x=0,qa(178,j|0),s=x,x=0,s&1):0))t=72;if((t|0)==72?(x=0,f=ta(67,h|0)|0,s=x,x=0,!(s&1)):0){k[l>>2]=f;k[j>>2]=f;k[g>>2]=f+h;e=k[v>>2]|0;g=k[w>>2]|0;if((e|0)==(g|0))break;do{i[f>>0]=i[e>>0]|0;f=(k[l>>2]|0)+1|0;k[l>>2]=f;e=e+1|0}while((e|0)!=(g|0));e=k[v>>2]|0;break}f=Wa()|0;e=k[j>>2]|0;if(e){if((k[l>>2]|0)!=(e|0))k[l>>2]=e;mj(e)}mj(m);break a}while(0);if(!e){r=u;return m|0}if((k[w>>2]|0)!=(e|0))k[w>>2]=e;mj(e);r=u;return m|0}else t=29}else t=29;while(0);if((t|0)==29)f=Wa()|0;e=k[v>>2]|0;if(!e)fb(f|0);if((k[w>>2]|0)!=(e|0))k[w>>2]=e;mj(e);fb(f|0);return 0}function Ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;n=(b&65535)>>>8&255;o=a+4|0;c=k[o>>2]|0;p=a+8|0;d=k[p>>2]|0;if(c>>>0>=d>>>0){e=k[a>>2]|0;f=e;g=c-f+1|0;if((g|0)<0){jj(a);f=k[a>>2]|0;d=k[p>>2]|0;e=f}m=e;c=d-m|0;if(c>>>0<1073741823){c=c<<1;c=c>>>0>>0?g:c;g=k[o>>2]|0;d=g-m|0;if(!c){l=0;j=0;h=d;c=g}else q=8}else{d=k[o>>2]|0;c=2147483647;g=d;d=d-m|0;q=8}if((q|0)==8){l=c;j=lj(c)|0;h=d;c=g}i[j+h>>0]=n;d=j+(h+1)|0;m=c-m|0;n=j+(h-m)|0;vw(n|0,e|0,m|0)|0;k[a>>2]=n;k[o>>2]=d;k[p>>2]=j+l;if(f){mj(f);d=k[o>>2]|0}}else{i[c>>0]=n;d=(k[o>>2]|0)+1|0;k[o>>2]=d}m=b&255;c=k[p>>2]|0;if(d>>>0>>0){i[d>>0]=m;k[o>>2]=(k[o>>2]|0)+1;return}e=k[a>>2]|0;f=e;d=d-f+1|0;if((d|0)<0){jj(a);f=k[a>>2]|0;c=k[p>>2]|0;e=f}l=e;c=c-l|0;if(c>>>0<1073741823){c=c<<1;c=c>>>0>>0?d:c;g=k[o>>2]|0;d=g-l|0;if(!c){j=0;h=0;c=g}else q=18}else{d=k[o>>2]|0;c=2147483647;g=d;d=d-l|0;q=18}if((q|0)==18){j=c;h=lj(c)|0;c=g}i[h+d>>0]=m;b=c-l|0;q=h+(d-b)|0;vw(q|0,e|0,b|0)|0;k[a>>2]=q;k[o>>2]=h+(d+1);k[p>>2]=h+j;if(!f)return;mj(f);return}function Ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=k[a>>2]|0;q=k[b>>2]|0;p=q;j=e;n=c;l=d-n|0;if((l|0)<=0){r=q;return r|0}o=a+8|0;b=k[o>>2]|0;r=a+4|0;m=k[r>>2]|0;f=m;if((l|0)<=(b-f|0)){h=f-p|0;if((l|0)>(h|0)){g=c+h|0;if((g|0)==(d|0))b=m;else{f=g;b=m;do{i[b>>0]=i[f>>0]|0;b=(k[r>>2]|0)+1|0;k[r>>2]=b;f=f+1|0}while((f|0)!=(d|0))}if((h|0)>0)h=b;else{r=q;return r|0}}else{h=m;g=d}e=h-(e+(l-j+p))|0;b=q+e|0;if(b>>>0>>0){f=h;do{i[f>>0]=i[b>>0]|0;b=b+1|0;f=(k[r>>2]|0)+1|0;k[r>>2]=f}while((b|0)!=(m|0))}xw(h+(0-e)|0,q|0,e|0)|0;xw(q|0,c|0,g-n|0)|0;r=q;return r|0}f=f-j+l|0;if((f|0)<0){jj(a);b=k[o>>2]|0;e=k[a>>2]|0}g=e;b=b-g|0;if(b>>>0<1073741823){b=b<<1;b=b>>>0>>0?f:b;f=p-g|0;if(!b){g=0;l=0}else h=15}else{b=2147483647;f=p-g|0;h=15}if((h|0)==15){g=b;l=lj(b)|0}j=l+f|0;b=j;h=l+g|0;if((c|0)!=(d|0)){e=c;g=j;do{i[g>>0]=i[e>>0]|0;g=b+1|0;b=g;e=e+1|0}while((e|0)!=(d|0));e=k[a>>2]|0}c=p-e|0;d=l+(f-c)|0;vw(d|0,e|0,c|0)|0;p=(k[r>>2]|0)-p|0;c=b;vw(c|0,q|0,p|0)|0;b=k[a>>2]|0;k[a>>2]=d;k[r>>2]=c+p;k[o>>2]=h;if(!b){r=j;return r|0}mj(b);r=j;return r|0}function Ki(a){a=a|0;var b=0;k[a>>2]=36800;b=k[a+8>>2]|0;if(!b)return;a=a+12|0;if((k[a>>2]|0)!=(b|0))k[a>>2]=b;mj(b);return}function Li(a){a=a|0;var b=0,c=0;k[a>>2]=36800;b=k[a+8>>2]|0;if(!b){mj(a);return}c=a+12|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;mj(b);mj(a);return}function Mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;Ni(b,-1);Ni(b,i[a+4>>0]|0);e=a+12|0;d=a+8|0;a=(k[e>>2]|0)-(k[d>>2]|0)+2|0;Ni(b,(a&65535)>>>8&255);Ni(b,a&255);a=k[d>>2]|0;if((k[e>>2]|0)==(a|0))return;else c=0;do{Ni(b,i[a+c>>0]|0);c=c+1|0;a=k[d>>2]|0}while(c>>>0<((k[e>>2]|0)-a|0)>>>0);return}function Ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=k[a+4>>2]|0;if(e){c=e+24|0;d=k[c>>2]|0;if((d|0)==(k[e+28>>2]|0)){Vb[k[(k[e>>2]|0)+52>>2]&63](e,b&255)|0;return}else{k[c>>2]=d+1;i[d>>0]=b;return}}c=a+16|0;d=k[c>>2]|0;if(d>>>0<(k[a+12>>2]|0)>>>0){k[c>>2]=d+1;i[(k[a+8>>2]|0)+d>>0]=b;return}c=Va(16)|0;x=0;d=Da(1)|0;b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}x=0;Fa(7,c|0,4,d|0);b=x;x=0;if(b&1){b=Wa()|0;Ua(c|0);fb(b|0)}else ub(c|0,824,96)}function Oi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;e=(b|0)<4095?(b+128|0)/256|0:16;f=(c*3|0)+2+e|0;d=c+1|0;f=(f|0)<(d|0)|(f|0)>(b|0)?d:f;k[a+4>>2]=f;d=(e<<2|3)+(c*5|0)|0;d=(d|0)>(b|0)|(d|0)<(f|0)?f:d;k[a+8>>2]=d;c=(c*7|0)+4+(e*17|0)|0;k[a+12>>2]=(c|0)>(b|0)|(c|0)<(d|0)?d:c;k[a>>2]=b;k[a+16>>2]=64;return}function Pi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=r;r=r+128|0;h=l+100|0;d=l+16|0;c=l+112|0;j=l+4|0;m=l;e=d;f=a+20|0;g=e+84|0;do{k[e>>2]=k[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));k[d+16>>2]=k[a+4>>2];f=zc(c,d,a+56|0)|0;c=k[(k[f>>2]|0)+16>>2]|0;a=a+8|0;x=0;k[h>>2]=k[a>>2];k[h+4>>2]=k[a+4>>2];k[h+8>>2]=k[a+8>>2];c=Aa(c|0,f|0,h|0)|0;a=x;x=0;do if(a&1)c=Wa()|0;else{e=b+4|0;k[j>>2]=k[e>>2];k[j+4>>2]=k[e+4>>2];k[j+8>>2]=k[e+8>>2];e=b+16|0;a=k[e>>2]|0;h=j+8|0;k[h>>2]=(k[h>>2]|0)-a;h=j+4|0;k[h>>2]=(k[h>>2]|0)+a;h=k[(k[f>>2]|0)+12>>2]|0;k[m>>2]=c;x=0;c=Ea(h|0,f|0,m|0,j|0,((i[b>>0]|0)==0?0:(k[b+8>>2]|0)+a|0)|0)|0;j=x;x=0;if(j&1){c=Wa()|0;d=k[m>>2]|0;k[m>>2]=0;if(!d)break;Lb[k[(k[d>>2]|0)+4>>2]&255](d);break}d=k[m>>2]|0;k[m>>2]=0;if(d)Lb[k[(k[d>>2]|0)+4>>2]&255](d);if(!(k[b+4>>2]|0))k[e>>2]=(k[e>>2]|0)+c;if(!f){r=l;return}Lb[k[(k[f>>2]|0)+4>>2]&255](f);r=l;return}while(0);if(!f)fb(c|0);Lb[k[(k[f>>2]|0)+4>>2]&255](f);fb(c|0)}function Qi(a,b){a=a|0;b=b|0;k[a>>2]=k[b>>2];k[a+4>>2]=k[b+4>>2];k[a+8>>2]=k[b+8>>2];i[a+12>>0]=0;b=a+16|0;a=b+100|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function Ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;u=r;r=r+32|0;t=u+4|0;o=u+16|0;v=u;Si(a);p=a+16|0;e=k[a+24>>2]|0;a:do if((e+-2|0)>>>0<=14){q=a+40|0;c=k[q>>2]|0;if(c>>>0>2)c=5;else{s=a+32|0;f=k[s>>2]|0;switch(f|0){case 0:{c=1;break a}case 4:{if((c|0)==2){c=2;break a}break}case 3:break;default:if(c){c=2;break a}}n=a+100|0;c=a+108|0;d=k[c>>2]|0;if((d|0)<1){d=k[p>>2]|0;k[c>>2]=d;c=k[a+20>>2]|0;k[a+112>>2]=c}else c=k[a+112>>2]|0;j=Dw(c|0,((c|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;h=(e+7|0)/8|0;h=Dw(j|0,M|0,h|0,((h|0)<0)<<31>>31|0)|0;j=b+4|0;c=k[j>>2]|0;g=b+8|0;if((c|0)!=0?(l=k[g>>2]|0,m=Dw(f|0,((f|0)<0)<<31>>31|0,h|0,M|0)|0,e=M,0<(e|0)|0==(e|0)&l>>>0>>0):0){c=Va(16)|0;x=0;d=Da(1)|0;v=x;x=0;if(!(v&1)?(x=0,Fa(7,c|0,3,d|0),v=x,x=0,!(v&1)):0)ub(c|0,824,96);v=Wa()|0;Ua(c|0);fb(v|0)}l=a+52|0;m=a+12|0;if((f|0)>0)f=0;else{r=u;return}while(1){Ti(a,(f|0)==0);d=xc(o,p,l)|0;e=k[(k[d>>2]|0)+8>>2]|0;x=0;k[t>>2]=k[b>>2];k[t+4>>2]=k[b+4>>2];k[t+8>>2]=k[b+8>>2];e=Aa(e|0,d|0,t|0)|0;w=x;x=0;if(w&1){e=32;break}w=k[(k[d>>2]|0)+16>>2]|0;k[v>>2]=e;x=0;oa(w|0,d|0,v|0,n|0,a|0,(i[m>>0]|0)!=0|0);w=x;x=0;if(w&1){e=30;break}e=k[v>>2]|0;k[v>>2]=0;if(e)Lb[k[(k[e>>2]|0)+4>>2]&255](e);if(!c)c=0;else{c=c+h|0;k[j>>2]=c;k[g>>2]=(k[g>>2]|0)-h}e=(k[q>>2]|0)==0;f=(e&1)+f|0;if(d)Lb[k[(k[d>>2]|0)+4>>2]&255](d);if(!e){e=34;break}if((f|0)>=(k[s>>2]|0)){e=34;break}}if((e|0)==30){c=Wa()|0;e=k[v>>2]|0;k[v>>2]=0;if(e)Lb[k[(k[e>>2]|0)+4>>2]&255](e)}else if((e|0)==32){c=Wa()|0;if(!d){w=c;fb(w|0)}}else if((e|0)==34){r=u;return}Lb[k[(k[d>>2]|0)+4>>2]&255](d);w=c;fb(w|0)}}else c=2;while(0);d=Va(16)|0;x=0;e=Da(1)|0;w=x;x=0;if(!(w&1)?(x=0,Fa(7,d|0,c|0,e|0),w=x,x=0,!(w&1)):0)ub(d|0,824,96);w=Wa()|0;Ua(d|0);fb(w|0)}function Si(a){a=a|0;var b=0,c=0,d=0,e=0;if((Wi(a)|0)<<24>>24!=-40){b=Va(16)|0;x=0;c=Da(1)|0;e=x;x=0;if(!(e&1)?(x=0,Fa(7,b|0,5,c|0),e=x,x=0,!(e&1)):0)ub(b|0,824,96);e=Wa()|0;Ua(b|0);fb(e|0)}b=Wi(a)|0;if(b<<24>>24==-38)return;while(1){d=((Vi(a)|0)&255)<<8;d=d|(Vi(a)|0)&255;b=Xi(a,b)|0;c=-2-b+d|0;if((c|0)<0)break;if((c|0)>0){b=d+-2-b|0;c=0;do{Vi(a)|0;c=c+1|0}while((c|0)!=(b|0))}b=Wi(a)|0;if(b<<24>>24==-38){e=8;break}}if((e|0)==8)return;b=Va(16)|0;x=0;c=Da(1)|0;e=x;x=0;if(!(e&1)?(x=0,Fa(7,b|0,5,c|0),e=x,x=0,!(e&1)):0)ub(b|0,824,96);e=Wa()|0;Ua(b|0);fb(e|0)}function Ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(!b){if((Vi(a)|0)<<24>>24!=-1){b=Va(16)|0;x=0;c=Da(1)|0;a=x;x=0;if(!(a&1)?(x=0,Fa(7,b|0,12,c|0),a=x,x=0,!(a&1)):0)ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}if((Vi(a)|0)<<24>>24!=-38){b=Va(16)|0;x=0;c=Da(1)|0;a=x;x=0;if(!(a&1)?(x=0,Fa(7,b|0,5,c|0),a=x,x=0,!(a&1)):0)ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}}Vi(a)|0;Vi(a)|0;c=Vi(a)|0;d=c&255;do if(c<<24>>24==1){Vi(a)|0;c=0;e=20}else{if((d|0)==(k[a+32>>2]|0)){b=Vi(a)|0;if(!(c<<24>>24))break;else{c=0;e=20;break}}b=Va(16)|0;x=0;c=Da(1)|0;a=x;x=0;if(!(a&1)?(x=0,Fa(7,b|0,2,c|0),a=x,x=0,!(a&1)):0)ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}while(0);if((e|0)==20)while(1){Vi(a)|0;c=c+1|0;b=Vi(a)|0;if((c|0)==(d|0))break;else e=20}k[a+36>>2]=b&255;e=Vi(a)|0;c=a+40|0;k[c>>2]=e&255;if((e&255)>=3){b=Va(16)|0;x=0;c=Da(1)|0;a=x;x=0;if(!(a&1)?(x=0,Fa(7,b|0,5,c|0),a=x,x=0,!(a&1)):0)ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}if((Vi(a)|0)<<24>>24){b=Va(16)|0;x=0;c=Da(1)|0;a=x;x=0;if(!(a&1)?(x=0,Fa(7,b|0,5,c|0),a=x,x=0,!(a&1)):0)ub(b|0,824,96);a=Wa()|0;Ua(b|0);fb(a|0)}d=a+28|0;if(k[d>>2]|0)return;b=k[a+108>>2]|0;if(!b)b=k[a+16>>2]|0;if(!(k[c>>2]|0))c=1;else c=k[a+32>>2]|0;e=ia(c,b)|0;a=ia(e,((k[a+24>>2]|0)+7|0)/8|0)|0;k[d>>2]=a;return}function Ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((c|0)<=0)return;n=b+4|0;o=b+8|0;q=0;do{p=Vi(a)|0;d=k[n>>2]|0;e=k[o>>2]|0;if(d>>>0>=e>>>0){f=k[b>>2]|0;g=f;h=d-g+1|0;if((h|0)<0){jj(b);g=k[b>>2]|0;e=k[o>>2]|0;f=g}m=f;d=e-m|0;if(d>>>0<1073741823){d=d<<1;d=d>>>0>>0?h:d;h=k[n>>2]|0;e=h-m|0;if(!d){l=0;j=0;d=h}else r=10}else{e=k[n>>2]|0;d=2147483647;h=e;e=e-m|0;r=10}if((r|0)==10){r=0;l=d;j=lj(d)|0;d=h}i[j+e>>0]=p;m=d-m|0;p=j+(e-m)|0;vw(p|0,f|0,m|0)|0;k[b>>2]=p;k[n>>2]=j+(e+1);k[o>>2]=j+l;if(g)mj(g)}else{i[d>>0]=p;k[n>>2]=(k[n>>2]|0)+1}q=q+1|0}while((q|0)!=(c|0));return}function Vi(a){a=a|0;var b=0,c=0,d=0,e=0;c=k[a>>2]|0;if(c){a=c+12|0;b=k[a>>2]|0;if((b|0)==(k[c+16>>2]|0))a=Ob[k[(k[c>>2]|0)+40>>2]&127](c)|0;else{k[a>>2]=b+1;a=l[b>>0]|0}e=a&255;return e|0}d=a+8|0;e=k[d>>2]|0;if(e){a=a+4|0;b=k[a>>2]|0;c=i[b>>0]|0;if(!b){e=c;return e|0}k[a>>2]=b+1;k[d>>2]=e+-1;e=c;return e|0}a=Va(16)|0;x=0;b=Da(1)|0;e=x;x=0;if(e&1){e=Wa()|0;Ua(a|0);fb(e|0)}x=0;Fa(7,a|0,4,b|0);e=x;x=0;if(e&1){e=Wa()|0;Ua(a|0);fb(e|0)}else ub(a|0,824,96);return 0}function Wi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+176|0;b=c+152|0;i=c+16|0;g=c;h=Vi(a)|0;d=h&255;if(h<<24>>24==-1){do b=Vi(a)|0;while(b<<24>>24==-1);r=c;return b|0}h=i+56|0;f=i+4|0;k[i>>2]=36160;k[h>>2]=36180;x=0;ra(62,i+56|0,f|0);e=x;x=0;if(e&1){i=Wa()|0;qn(h);fb(i|0)}k[i+128>>2]=0;k[i+132>>2]=-1;k[i>>2]=36200;k[i+56>>2]=36220;x=0;qa(180,f|0);e=x;x=0;do if(e&1)b=Wa()|0;else{k[f>>2]=36236;e=i+36|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[i+52>>2]=16;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;x=0;ra(63,f|0,b|0);c=x;x=0;if(c&1){i=Wa()|0;Sm(b);Sm(e);xn(f);b=i;break}Sm(b);k[i+((k[(k[i>>2]|0)+-12>>2]|0)+76)>>2]=48;x=0;b=va(28,i|0,50907,62)|0;c=x;x=0;if(!(c&1)?(c=b+((k[(k[b>>2]|0)+-12>>2]|0)+4)|0,k[c>>2]=k[c>>2]&-75|8,c=b+((k[(k[b>>2]|0)+-12>>2]|0)+4)|0,k[c>>2]=k[c>>2]|16384,k[b+((k[(k[b>>2]|0)+-12>>2]|0)+12)>>2]=2,x=0,Aa(38,b|0,d|0)|0,d=x,x=0,!(d&1)):0){c=Va(16)|0;x=0;ra(64,g|0,f|0);d=x;x=0;if(!(d&1)){x=0;b=Da(1)|0;d=x;x=0;if(!(d&1)?(x=0,Ja(36,c|0,12,b|0,g|0),d=x,x=0,!(d&1)):0){x=0;Fa(6,c|0,824,96);x=0;a=0}else a=1;b=Wa()|0;Sm(g);if(!a){g=b;k[i>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}}else b=Wa()|0;Ua(c|0);g=b;k[i>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}g=Wa()|0;k[i>>2]=36200;k[h>>2]=36220;k[f>>2]=36236;Sm(e);xn(f);qn(h);fb(g|0)}while(0);i=b;qn(h);fb(i|0);return 0}function Xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;c=r;r=r+320|0;h=c+300|0;l=c+152|0;i=c+288|0;m=c+16|0;j=c;switch(b<<24>>24){case -9:{n=(Vi(a)|0)&255;k[a+24>>2]=n;n=((Vi(a)|0)&255)<<8|(Vi(a)|0)&255;m=((Vi(a)|0)&255)<<8|(Vi(a)|0)&255;k[a+16>>2]=m;k[a+20>>2]=n;n=(Vi(a)|0)&255;k[a+32>>2]=n;n=6;r=c;return n|0}case -8:{n=Yi(a)|0;r=c;return n|0}case -24:{n=Zi(a)|0;r=c;return n|0}case -53:case -54:case -55:case -57:case -58:case -59:case -61:case -62:case -63:case -64:{g=l+56|0;e=l+4|0;k[l>>2]=36160;k[g>>2]=36180;x=0;ra(62,l+56|0,e|0);m=x;x=0;if(m&1){n=Wa()|0;qn(g);fb(n|0)}k[l+128>>2]=0;k[l+132>>2]=-1;k[l>>2]=36200;k[l+56>>2]=36220;x=0;qa(180,e|0);m=x;x=0;do if(m&1)a=Wa()|0;else{k[e>>2]=36236;f=l+36|0;k[f>>2]=0;k[f+4>>2]=0;k[f+8>>2]=0;k[f+12>>2]=0;k[l+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;x=0;ra(63,e|0,h|0);m=x;x=0;if(m&1){a=Wa()|0;Sm(h);Sm(f);xn(e);break}Sm(h);x=0;a=va(28,l|0,50970,26)|0;m=x;x=0;do if((!(m&1)?(x=0,d=Aa(38,a|0,b&255|0)|0,m=x,x=0,!(m&1)):0)?(x=0,va(28,d|0,50997,18)|0,m=x,x=0,!(m&1)):0){d=Va(16)|0;x=0;ra(64,i|0,e|0);m=x;x=0;if(!(m&1)){x=0;a=Da(1)|0;m=x;x=0;if(!(m&1)?(x=0,Ja(36,d|0,10,a|0,i|0),m=x,x=0,!(m&1)):0){x=0;Fa(6,d|0,824,96);x=0;c=0}else c=1;a=Wa()|0;Sm(i);if(!c)break}else a=Wa()|0;Ua(d|0)}else n=20;while(0);if((n|0)==20)a=Wa()|0;k[l>>2]=36200;k[g>>2]=36220;k[e>>2]=36236;Sm(f);xn(e);qn(g);n=a;fb(n|0)}while(0);n=a;qn(g);fb(n|0)}case -25:case -32:case -2:{n=0;r=c;return n|0}default:{i=m+56|0;f=m+4|0;k[m>>2]=36160;k[i>>2]=36180;x=0;ra(62,m+56|0,f|0);l=x;x=0;if(l&1){n=Wa()|0;qn(i);fb(n|0)}k[m+128>>2]=0;k[m+132>>2]=-1;k[m>>2]=36200;k[m+56>>2]=36220;x=0;qa(180,f|0);l=x;x=0;do if(l&1)a=Wa()|0;else{k[f>>2]=36236;g=m+36|0;k[g>>2]=0;k[g+4>>2]=0;k[g+8>>2]=0;k[g+12>>2]=0;k[m+52>>2]=16;k[h>>2]=0;k[h+4>>2]=0;k[h+8>>2]=0;x=0;ra(63,f|0,h|0);l=x;x=0;if(l&1){a=Wa()|0;Sm(h);Sm(g);xn(f);break}Sm(h);x=0;a=va(28,m|0,51016,20)|0;l=x;x=0;do if((!(l&1)?(x=0,e=Aa(38,a|0,b&255|0)|0,l=x,x=0,!(l&1)):0)?(x=0,va(28,e|0,51037,13)|0,l=x,x=0,!(l&1)):0){d=Va(16)|0;x=0;ra(64,j|0,f|0);l=x;x=0;if(!(l&1)){x=0;a=Da(1)|0;l=x;x=0;if(!(l&1)?(x=0,Ja(36,d|0,11,a|0,j|0),l=x,x=0,!(l&1)):0){x=0;Fa(6,d|0,824,96);x=0;c=0}else c=1;a=Wa()|0;Sm(j);if(!c)break}else a=Wa()|0;Ua(d|0)}else n=40;while(0);if((n|0)==40)a=Wa()|0;k[m>>2]=36200;k[i>>2]=36220;k[f>>2]=36236;Sm(g);xn(f);qn(i);n=a;fb(n|0)}while(0);n=a;qn(i);fb(n|0)}}return 0}function Yi(a){a=a|0;var b=0;if((Vi(a)|0)<<24>>24!=1){a=1;return a|0}b=((Vi(a)|0)&255)<<8;b=b|(Vi(a)|0)&255;k[a+52>>2]=b;b=((Vi(a)|0)&255)<<8;b=b|(Vi(a)|0)&255;k[a+56>>2]=b;b=((Vi(a)|0)&255)<<8;b=b|(Vi(a)|0)&255;k[a+60>>2]=b;b=((Vi(a)|0)&255)<<8;b=b|(Vi(a)|0)&255;k[a+64>>2]=b;b=((Vi(a)|0)&255)<<8;b=b|(Vi(a)|0)&255;k[a+68>>2]=b;a=11;return a|0}function Zi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;e=c;k[e>>2]=0;f=e+4|0;k[f>>2]=0;k[e+8>>2]=0;x=0;Fa(9,a|0,e|0,4);b=x;x=0;a:do if(b&1)d=3;else{b=k[e>>2]|0;b:do if(!(yl(b,51051,4)|0)){x=0;b=ta(69,a|0)|0;g=x;x=0;if(g&1){d=3;break a}b=b&255;switch(b|0){case 3:case 2:case 1:case 0:{k[a+44>>2]=b;a=5;b=k[e>>2]|0;break b}case 5:case 4:{b=Va(16)|0;x=0;a=Da(1)|0;g=x;x=0;if(!(g&1)?(x=0,Fa(7,b|0,7,a|0),g=x,x=0,!(g&1)):0){x=0;Fa(6,b|0,824,96);x=0;d=3;break a}a=Wa()|0;Ua(b|0);break a}default:{b=Va(16)|0;x=0;a=Da(1)|0;g=x;x=0;if(!(g&1)?(x=0,Fa(7,b|0,5,a|0),g=x,x=0,!(g&1)):0){x=0;Fa(6,b|0,824,96);x=0;d=3;break a}a=Wa()|0;Ua(b|0);break a}}}else a=4;while(0);if(!b){r=c;return a|0}if((k[f>>2]|0)!=(b|0))k[f>>2]=b;mj(b);r=c;return a|0}while(0);if((d|0)==3)a=Wa()|0;b=k[e>>2]|0;if(!b)fb(a|0);if((k[f>>2]|0)!=(b|0))k[f>>2]=b;mj(b);fb(a|0);return 0}function _i(a){a=a|0;var b=0,c=0,d=0;d=k[(k[a>>2]|0)+-12>>2]|0;k[a+d>>2]=36200;b=a+(d+56)|0;k[b>>2]=36220;c=a+(d+4)|0;k[c>>2]=36236;Sm(a+(d+36)|0);xn(c);qn(b);return}function $i(a){a=a|0;return}function aj(a){a=a|0;mj(a);return}function bj(a){a=a|0;i[a>>0]=0;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;return}function cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;e=r;r=r+16|0;f=e;b=Gi(b)|0;k[f>>2]=b;c=a+28|0;d=k[c>>2]|0;if(d>>>0<(k[a+32>>2]|0)>>>0){k[d>>2]=b;k[c>>2]=d+4;k[f>>2]=0;r=e;return}x=0;ra(57,a+24|0,f|0);a=x;x=0;if(a&1){b=Wa()|0;c=k[f>>2]|0;k[f>>2]=0;if(!c)fb(b|0);Lb[k[(k[c>>2]|0)+4>>2]&255](c);fb(b|0)}else{b=k[f>>2]|0;k[f>>2]=0;if(!b){r=e;return}Lb[k[(k[b>>2]|0)+4>>2]&255](b);r=e;return}}function dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=a+4|0;k[d>>2]=k[b>>2];k[d+4>>2]=k[b+4>>2];k[d+8>>2]=k[b+8>>2];Ni(a,-1);Ni(a,-40);d=a+28|0;e=a+24|0;b=k[e>>2]|0;if((k[d>>2]|0)==(b|0)){Ni(a,-1);Ni(a,-39);a=a+16|0;a=k[a>>2]|0;return a|0}else c=0;do{f=k[b+(c<<2)>>2]|0;Mb[k[(k[f>>2]|0)+8>>2]&127](f,a);c=c+1|0;b=k[e>>2]|0}while(c>>>0<(k[d>>2]|0)-b>>2>>>0);Ni(a,-1);Ni(a,-39);f=a+16|0;f=k[f>>2]|0;return f|0}function ej(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;h=m+32|0;e=m+12|0;i=m+8|0;l=m+4|0;n=m;d=c+36|0;do if(((((k[d>>2]|0)==0?(k[c+40>>2]|0)==0:0)?(k[c+44>>2]|0)==0:0)?(k[c+48>>2]|0)==0:0)?(k[c+52>>2]|0)==0:0){d=k[c+8>>2]|0;if((d|0)<=12){f=a+28|0;g=a+32|0;break}Oi(e,(1<>2]|0);d=Fi(e)|0;k[i>>2]=d;f=a+28|0;e=k[f>>2]|0;g=a+32|0;if(e>>>0<(k[g>>2]|0)>>>0){k[e>>2]=d;k[f>>2]=e+4;k[i>>2]=0;break}x=0;ra(57,a+24|0,i|0);h=x;x=0;if(!(h&1)){d=k[i>>2]|0;k[i>>2]=0;if(!d)break;Lb[k[(k[d>>2]|0)+4>>2]&255](d);break}c=Wa()|0;d=k[i>>2]|0;k[i>>2]=0;if(!d){n=c;fb(n|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);n=c;fb(n|0)}else j=6;while(0);do if((j|0)==6){d=Fi(d)|0;k[h>>2]=d;f=a+28|0;e=k[f>>2]|0;g=a+32|0;if(e>>>0<(k[g>>2]|0)>>>0){k[e>>2]=d;k[f>>2]=e+4;k[h>>2]=0;break}x=0;ra(57,a+24|0,h|0);j=x;x=0;if(!(j&1)){d=k[h>>2]|0;k[h>>2]=0;if(!d)break;Lb[k[(k[d>>2]|0)+4>>2]&255](d);break}c=Wa()|0;d=k[h>>2]|0;k[h>>2]=0;if(!d){n=c;fb(n|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);n=c;fb(n|0)}while(0);d=a+20|0;e=(k[d>>2]|0)+1|0;k[d>>2]=e;d=k[c+24>>2]|0;h=(d|0)==0?1:k[c+16>>2]|0;d=Hi(e,h,k[c+20>>2]|0,d)|0;k[l>>2]=d;e=k[f>>2]|0;do if(e>>>0<(k[g>>2]|0)>>>0){k[e>>2]=d;k[f>>2]=e+4;k[l>>2]=0}else{x=0;ra(57,a+24|0,l|0);j=x;x=0;if(!(j&1)){d=k[l>>2]|0;k[l>>2]=0;if(!d)break;Lb[k[(k[d>>2]|0)+4>>2]&255](d);break}c=Wa()|0;d=k[l>>2]|0;k[l>>2]=0;if(!d){n=c;fb(n|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);n=c;fb(n|0)}while(0);i=lj(104)|0;k[i>>2]=36820;k[i+4>>2]=h;e=i+8|0;k[e>>2]=k[b>>2];k[e+4>>2]=k[b+4>>2];k[e+8>>2]=k[b+8>>2];e=i+20|0;d=e+84|0;do{k[e>>2]=k[c>>2];e=e+4|0;c=c+4|0}while((e|0)<(d|0));k[n>>2]=i;c=k[f>>2]|0;if(c>>>0<(k[g>>2]|0)>>>0){k[c>>2]=i;k[f>>2]=c+4;k[n>>2]=0;r=m;return}x=0;ra(57,a+24|0,n|0);a=x;x=0;if(a&1){c=Wa()|0;d=k[n>>2]|0;k[n>>2]=0;if(!d){n=c;fb(n|0)}Lb[k[(k[d>>2]|0)+4>>2]&255](d);n=c;fb(n|0)}else{c=k[n>>2]|0;k[n>>2]=0;if(!c){r=m;return}Lb[k[(k[c>>2]|0)+4>>2]&255](c);r=m;return}}function fj(a,b,c,d,e,f,g,h,j,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,s=0,t=0,u=0;p=r;r=r+96|0;o=p;n=sc(a,b,o,0)|0;if(n){e=n;r=p;return e|0}i[o+32>>0]=0;s=k[o+8>>2]|0;u=k[o>>2]|0;t=k[o+4>>2]|0;n=ia(t,u)|0;q=k[o+16>>2]|0;n=ia(ia(n,(s|0)<9?1:2)|0,q)|0;k[d>>2]=n;n=Pl(n)|0;k[c>>2]=n;k[e>>2]=u;k[f>>2]=t;k[g>>2]=s;k[h>>2]=k[o+12>>2];k[j>>2]=q;k[l>>2]=k[o+20>>2];k[m>>2]=k[o+24>>2];e=tc(n,k[d>>2]|0,a,b,0,0)|0;r=p;return e|0}function gj(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,m=0,n=0;m=r;r=r+96|0;j=m+4|0;g=m;l=j;n=l+84|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(n|0));k[j+16>>2]=f;k[j+8>>2]=e;k[j>>2]=c;k[j+4>>2]=d;c=Pl(b)|0;k[h>>2]=c;k[g>>2]=0;c=rc(h,b,g,a,b,j,0)|0;k[i>>2]=k[g>>2];r=m;return c|0}function hj(a,b){a=a|0;b=b|0;var c=0;c=r;r=r+16|0;k[c>>2]=b;b=k[9320]|0;ml(b,a,c)|0;el(10,b)|0;Pa()}function ij(a){a=a|0;Ta(51337,51366,1164,51442)}function jj(a){a=a|0;Ta(51463,51486,303,51442)}function kj(){var a=0,b=0;a=r;r=r+16|0;if(!(mb(37024,4)|0)){b=ib(k[9255]|0)|0;r=a;return b|0}else hj(51562,a);return 0}function lj(a){a=a|0;var b=0;b=(a|0)==0?1:a;a=Pl(b)|0;a:do if(!a){while(1){a=uj()|0;if(!a)break;$b[a&7]();a=Pl(b)|0;if(a)break a}b=Va(4)|0;k[b>>2]=36844;ub(b|0,592,78)}while(0);return a|0}function mj(a){a=a|0;Ql(a);return}function nj(a){a=a|0;mj(a);return}function oj(a){a=a|0;k[a>>2]=36844;return}function pj(a){a=a|0;return}function qj(a){a=a|0;mj(a);return}function rj(a){a=a|0;return 51611}function sj(a){a=a|0;var b=0;b=r;r=r+16|0;x=0;Ga(a|0);a=x;x=0;if(!(a&1)){x=0;ra(85,51626,b|0);x=0}a=Wa(0)|0;cb(a|0)|0;x=0;ra(85,51666,b+8|0);x=0;a=Wa(0)|0;x=0;Ga(3);b=x;x=0;if(b&1){b=Wa(0)|0;oc(b)}else oc(a)}function tj(){var a=0,b=0,c=0;x=0;a=Da(2)|0;c=x;x=0;if(c&1){c=Wa(0)|0;oc(c)}if(((a|0)!=0?(b=k[a>>2]|0,(b|0)!=0):0)?(c=b+48|0,(k[c>>2]&-256|0)==1126902528?(k[c+4>>2]|0)==1129074247:0):0)sj(k[b+12>>2]|0);c=k[9208]|0;k[9208]=c+0;sj(c)}function uj(){var a=0;a=k[9214]|0;k[9214]=a+0;return a|0}function vj(a){a=a|0;return}function wj(a){a=a|0;k[a>>2]=36868;dk(a+4|0);return}function xj(a){a=a|0;wj(a);mj(a);return}function yj(a){a=a|0;return k[a+4>>2]|0}function zj(a){a=a|0;return}function Aj(a){a=a|0;k[a>>2]=36888;return}function Bj(a){a=a|0;return}function Cj(a){a=a|0;mj(a);return}function Dj(a){a=a|0;return 51716}function Ej(a){a=a|0;return}function Fj(a){a=a|0;return}function Gj(a){a=a|0;return}function Hj(a){a=a|0;mj(a);return}function Ij(a){a=a|0;mj(a);return}function Jj(a){a=a|0;mj(a);return}function Kj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;if((a|0)!=(b|0))if((b|0)!=0?(e=Qj(b,656,672,0)|0,(e|0)!=0):0){b=f;d=b+56|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[f>>2]=e;k[f+8>>2]=a;k[f+12>>2]=-1;k[f+48>>2]=1;cc[k[(k[e>>2]|0)+28>>2]&63](e,f,k[c>>2]|0,1);if((k[f+24>>2]|0)==1){k[c>>2]=k[f+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function Lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function Mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Lj(0,b,c,d);return}function Nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Lj(0,b,c,d);else{a=k[a+8>>2]|0;cc[k[(k[a>>2]|0)+28>>2]&63](a,b,c,d)}return}function Oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=k[a+4>>2]|0;e=f>>8;if(f&1)e=k[(k[c>>2]|0)+e>>2]|0;a=k[a>>2]|0;cc[k[(k[a>>2]|0)+28>>2]&63](a,b,c+e|0,(f&2|0)!=0?d:2);return}function Pj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((a|0)!=(k[b+8>>2]|0)){f=k[a+12>>2]|0;e=a+16+(f<<3)|0;Oj(a+16|0,b,c,d);if((f|0)>1){f=b+54|0;a=a+24|0;do{Oj(a,b,c,d);if(i[f>>0]|0)break a;a=a+8|0}while(a>>>0>>0)}}else Lj(0,b,c,d);while(0);return}function Qj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;p=q;o=k[a>>2]|0;n=a+(k[o+-8>>2]|0)|0;o=k[o+-4>>2]|0;k[p>>2]=c;k[p+4>>2]=a;k[p+8>>2]=b;k[p+12>>2]=d;d=p+16|0;a=p+20|0;b=p+24|0;e=p+28|0;f=p+32|0;g=p+40|0;h=(o|0)==(c|0);l=d;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[d+36>>1]=0;i[d+38>>0]=0;a:do if(h){k[p+48>>2]=1;Sb[k[(k[c>>2]|0)+20>>2]&15](c,p,n,n,1,0);d=(k[b>>2]|0)==1?n:0}else{Jb[k[(k[o>>2]|0)+24>>2]&15](o,p,n,1,0);switch(k[p+36>>2]|0){case 0:{d=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[a>>2]|0:0;break a}case 1:break;default:{d=0;break a}}if((k[b>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){d=0;break}d=k[d>>2]|0}while(0);r=q;return d|0}function Rj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;d=b+16|0;a=k[d>>2]|0;if(!a){k[d>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((a|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}a=b+24|0;d=k[a>>2]|0;if((d|0)==2){k[a>>2]=e;d=e}if((d|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function Sj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){q=k[a+12>>2]|0;h=a+16+(q<<3)|0;Uj(a+16|0,b,c,d,e);f=a+24|0;if((q|0)<=1)break;g=k[a+8>>2]|0;if((g&2|0)==0?(j=b+36|0,(k[j>>2]|0)!=1):0){if(!(g&1)){g=b+54|0;while(1){if(i[g>>0]|0)break a;if((k[j>>2]|0)==1)break a;Uj(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}}g=b+24|0;a=b+54|0;while(1){if(i[a>>0]|0)break a;if((k[j>>2]|0)==1?(k[g>>2]|0)==1:0)break a;Uj(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}}g=b+54|0;while(1){if(i[g>>0]|0)break a;Uj(f,b,c,d,e);f=f+8|0;if(f>>>0>=h>>>0)break a}}if((k[b+16>>2]|0)!=(c|0)?(p=b+20|0,(k[p>>2]|0)!=(c|0)):0){k[b+32>>2]=d;m=b+44|0;if((k[m>>2]|0)==4)break;g=k[a+12>>2]|0;h=a+16+(g<<3)|0;j=b+52|0;d=b+53|0;n=b+54|0;l=a+8|0;o=b+24|0;b:do if((g|0)>0){g=0;f=0;a=a+16|0;while(1){i[j>>0]=0;i[d>>0]=0;Tj(a,b,c,c,1,e);if(i[n>>0]|0){q=20;break b}do if(i[d>>0]|0){if(!(i[j>>0]|0))if(!(k[l>>2]&1)){f=1;q=20;break b}else{f=1;break}if((k[o>>2]|0)==1)break b;if(!(k[l>>2]&2))break b;else{g=1;f=1}}while(0);a=a+8|0;if(a>>>0>=h>>>0){q=20;break}}}else{g=0;f=0;q=20}while(0);do if((q|0)==20){if((!g?(k[p>>2]=c,c=b+40|0,k[c>>2]=(k[c>>2]|0)+1,(k[b+36>>2]|0)==1):0)?(k[o>>2]|0)==2:0){i[n>>0]=1;if(f)break}else q=24;if((q|0)==24?f:0)break;k[m>>2]=4;break a}while(0);k[m>>2]=3;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Tj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=k[a+4>>2]|0;g=h>>8;if(h&1)g=k[(k[d>>2]|0)+g>>2]|0;a=k[a>>2]|0;Sb[k[(k[a>>2]|0)+20>>2]&15](a,b,c,d+g|0,(h&2|0)!=0?e:2,f);return}function Uj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=k[a+4>>2]|0;f=g>>8;if(g&1)f=k[(k[c>>2]|0)+f>>2]|0;a=k[a>>2]|0;Jb[k[(k[a>>2]|0)+24>>2]&15](a,b,c+f|0,(g&2|0)!=0?d:2,e);return}function Vj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;a:do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Jb[k[(k[h>>2]|0)+24>>2]&15](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;d=b+44|0;if((k[d>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;j=b+53|0;i[j>>0]=0;a=k[a+8>>2]|0;Sb[k[(k[a>>2]|0)+20>>2]&15](a,b,c,c,1,e);if(i[j>>0]|0){if(!(i[f>>0]|0)){f=1;h=13}}else{f=0;h=13}do if((h|0)==13){k[g>>2]=c;j=b+40|0;k[j>>2]=(k[j>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f)break}else h=16;if((h|0)==16?f:0)break;k[d>>2]=4;break a}while(0);k[d>>2]=3;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Wj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(g=b+28|0,(k[g>>2]|0)!=1):0)k[g>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(f=b+20|0,(k[f>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[f>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Xj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if((a|0)==(k[b+8>>2]|0))Rj(0,b,c,d,e);else{m=b+52|0;n=i[m>>0]|0;o=b+53|0;p=i[o>>0]|0;l=k[a+12>>2]|0;g=a+16+(l<<3)|0;i[m>>0]=0;i[o>>0]=0;Tj(a+16|0,b,c,d,e,f);a:do if((l|0)>1){h=b+24|0;j=a+8|0;l=b+54|0;a=a+24|0;do{if(i[l>>0]|0)break a;if(!(i[m>>0]|0)){if((i[o>>0]|0)!=0?(k[j>>2]&1|0)==0:0)break a}else{if((k[h>>2]|0)==1)break a;if(!(k[j>>2]&2))break a}i[m>>0]=0;i[o>>0]=0;Tj(a,b,c,d,e,f);a=a+8|0}while(a>>>0>>0)}while(0);i[m>>0]=n;i[o>>0]=p}return}function Yj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Rj(0,b,c,d,e);else{a=k[a+8>>2]|0;Sb[k[(k[a>>2]|0)+20>>2]&15](a,b,c,d,e,f)}return}function Zj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Rj(0,b,c,d,e);return}function _j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Qb[k[(k[a>>2]|0)+16>>2]&63](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function $j(a){a=a|0;if(!a)a=0;else a=(Qj(a,656,704,0)|0)!=0;return a&1|0}function ak(){var a=0;a=Va(4)|0;oj(a);ub(a|0,592,78)}function bk(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=kj()|0;if((a|0)!=0?(d=k[a>>2]|0,(d|0)!=0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[9257];hj(51919,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Qb[k[(k[608>>2]|0)+16>>2]&63](608,d,e)|0){h=k[e>>2]|0;e=k[9257]|0;h=Ob[k[(k[h>>2]|0)+8>>2]&127](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;hj(51833,f)}else{k[h>>2]=k[9257];k[h+4>>2]=a;hj(51878,h)}}hj(51957,g)}function ck(){var a=0;a=r;r=r+16|0;if(!(Oa(37020,184)|0)){r=a;return}else hj(51730,a)}function dk(a){a=a|0;var b=0,c=0;c=(k[a>>2]|0)+-4|0;b=k[c>>2]|0;k[c>>2]=b+-1;if((b+-1|0)<0)mj((k[a>>2]|0)+-12|0);return}function ek(a){a=a|0;var b=0;b=r;r=r+16|0;Ql(a);if(!(sb(k[9255]|0,0)|0)){r=b;return}else hj(51780,b)}function fk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=rl(a,b,c)|0;return a|0}function gk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=sl(a,b,c)|0;return a|0}function hk(){return 37296}function ik(){return 37300}function jk(){return 37304}function kk(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function lk(a){a=a|0;if((a+-48|0)>>>0<10)a=1;else a=((a|32)+-97|0)>>>0<6;return a&1|0}function mk(){var a=0;if(!(k[9258]|0))a=37308;else{a=(kb()|0)+60|0;a=k[a>>2]|0}return a|0}function nk(a){a=a|0;var b=0,c=0;b=0;while(1){if((l[51978+b>>0]|0)==(a|0)){c=2;break}b=b+1|0;if((b|0)==87){b=87;a=52066;c=5;break}}if((c|0)==2)if(!b)a=52066;else{a=52066;c=5}if((c|0)==5)while(1){c=a;while(1){a=c+1|0;if(!(i[c>>0]|0))break;else c=a}b=b+-1|0;if(!b)break;else c=5}return a|0}function ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0.0,g=0,h=0,j=0.0,m=0,n=0,o=0,p=0.0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0;K=r;r=r+512|0;G=K;switch(b|0){case 0:{J=24;I=-149;y=4;break}case 1:{J=53;I=-1074;y=4;break}case 2:{J=53;I=-1074;y=4;break}default:d=0.0}a:do if((y|0)==4){D=a+4|0;A=a+100|0;do{b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0}while((kk(b)|0)!=0);b:do switch(b|0){case 43:case 45:{e=1-(((b|0)==45&1)<<1)|0;b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0;H=e;break b}else{b=rk(a)|0;H=e;break b}}default:H=1}while(0);e=b;b=0;do{if((e|32|0)!=(i[53870+b>>0]|0))break;do if(b>>>0<7){e=k[D>>2]|0;if(e>>>0<(k[A>>2]|0)>>>0){k[D>>2]=e+1;e=l[e>>0]|0;break}else{e=rk(a)|0;break}}while(0);b=b+1|0}while(b>>>0<8);c:do switch(b|0){case 8:break;case 3:{y=23;break}default:{g=(c|0)!=0;if(g&b>>>0>3)if((b|0)==8)break c;else{y=23;break c}d:do if(!b){b=0;do{if((e|32|0)!=(i[56747+b>>0]|0))break d;do if(b>>>0<2){e=k[D>>2]|0;if(e>>>0<(k[A>>2]|0)>>>0){k[D>>2]=e+1;e=l[e>>0]|0;break}else{e=rk(a)|0;break}}while(0);b=b+1|0}while(b>>>0<3)}while(0);switch(b|0){case 3:{b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if((b|0)==40)b=1;else{if(!(k[A>>2]|0)){d=B;break a}k[D>>2]=(k[D>>2]|0)+-1;d=B;break a}while(1){e=k[D>>2]|0;if(e>>>0<(k[A>>2]|0)>>>0){k[D>>2]=e+1;e=l[e>>0]|0}else e=rk(a)|0;if(!((e+-48|0)>>>0<10|(e+-65|0)>>>0<26)?!((e|0)==95|(e+-97|0)>>>0<26):0)break;b=b+1|0}if((e|0)==41){d=B;break a}e=(k[A>>2]|0)==0;if(!e)k[D>>2]=(k[D>>2]|0)+-1;if(!g){J=mk()|0;k[J>>2]=22;qk(a,0);d=0.0;break a}if(!b){d=B;break a}while(1){b=b+-1|0;if(!e)k[D>>2]=(k[D>>2]|0)+-1;if(!b){d=B;break a}}}case 0:{do if((e|0)==48){b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if((b|32|0)!=120){if(!(k[A>>2]|0)){b=48;break}k[D>>2]=(k[D>>2]|0)+-1;b=48;break}b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0;g=0}else{b=rk(a)|0;g=0}e:while(1){switch(b|0){case 46:{y=74;break e}case 48:break;default:{w=0;h=0;v=0;e=0;m=g;n=0;u=0;j=1.0;g=0;d=0.0;break e}}b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0;g=1;continue}else{b=rk(a)|0;g=1;continue}}if((y|0)==74){b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if((b|0)==48){g=0;e=0;do{b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;g=tw(g|0,e|0,-1,-1)|0;e=M}while((b|0)==48);w=0;h=0;v=g;m=1;n=1;u=0;j=1.0;g=0;d=0.0}else{w=0;h=0;v=0;e=0;m=g;n=1;u=0;j=1.0;g=0;d=0.0}}while(1){s=b+-48|0;o=b|32;if(s>>>0>=10){t=(b|0)==46;if(!(t|(o+-97|0)>>>0<6)){o=v;s=w;break}if(t)if(!n){t=h;e=w;s=w;n=1;o=u;f=j}else{o=v;s=w;b=46;break}else y=86}else y=86;if((y|0)==86){y=0;b=(b|0)>57?o+-87|0:s;do if(!((w|0)<0|(w|0)==0&h>>>0<8)){if((w|0)<0|(w|0)==0&h>>>0<14){q=j*.0625;o=u;f=q;d=d+q*+(b|0);break}if((u|0)!=0|(b|0)==0){o=u;f=j}else{o=1;f=j;d=d+j*.5}}else{o=u;f=j;g=b+(g<<4)|0}while(0);h=tw(h|0,w|0,1,0)|0;t=v;s=M;m=1}b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;w=s;v=t;b=l[b>>0]|0;u=o;j=f;continue}else{w=s;v=t;b=rk(a)|0;u=o;j=f;continue}}if(!m){b=(k[A>>2]|0)==0;if(!b)k[D>>2]=(k[D>>2]|0)+-1;if(c){if(!b?(x=k[D>>2]|0,k[D>>2]=x+-1,(n|0)!=0):0)k[D>>2]=x+-2}else qk(a,0);d=+(H|0)*0.0;break a}m=(n|0)==0;n=m?h:o;m=m?s:e;if((s|0)<0|(s|0)==0&h>>>0<8){e=s;do{g=g<<4;h=tw(h|0,e|0,1,0)|0;e=M}while((e|0)<0|(e|0)==0&h>>>0<8)}if((b|32|0)==112){e=Dl(a,c)|0;b=M;if((e|0)==0&(b|0)==-2147483648){if(!c){qk(a,0);d=0.0;break a}if(!(k[A>>2]|0)){e=0;b=0}else{k[D>>2]=(k[D>>2]|0)+-1;e=0;b=0}}}else if(!(k[A>>2]|0)){e=0;b=0}else{k[D>>2]=(k[D>>2]|0)+-1;e=0;b=0}G=ww(n|0,m|0,2)|0;G=tw(G|0,M|0,-32,-1)|0;b=tw(G|0,M|0,e|0,b|0)|0;e=M;if(!g){d=+(H|0)*0.0;break a}if((e|0)>0|(e|0)==0&b>>>0>(0-I|0)>>>0){J=mk()|0;k[J>>2]=34;d=+(H|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break a}G=I+-106|0;F=((G|0)<0)<<31>>31;if((e|0)<(F|0)|(e|0)==(F|0)&b>>>0>>0){J=mk()|0;k[J>>2]=34;d=+(H|0)*2.2250738585072014e-308*2.2250738585072014e-308;break a}if((g|0)>-1){do{F=!(d>=.5);G=F&1|g<<1;g=G^1;d=d+(F?d:d+-1.0);b=tw(b|0,e|0,-1,-1)|0;e=M}while((G|0)>-1);h=b;j=d}else{h=b;j=d}b=rw(32,0,I|0,((I|0)<0)<<31>>31|0)|0;b=tw(h|0,e|0,b|0,M|0)|0;I=M;if(0>(I|0)|0==(I|0)&J>>>0>b>>>0)if((b|0)<0){b=0;y=127}else y=125;else{b=J;y=125}if((y|0)==125)if((b|0)<53)y=127;else{e=b;f=+(H|0);d=0.0}if((y|0)==127){d=+(H|0);e=b;f=d;d=+Ck(+Hk(1.0,84-b|0),d)}J=(g&1|0)==0&(j!=0.0&(e|0)<32);d=f*(J?0.0:j)+(d+f*+(((J&1)+g|0)>>>0))-d;if(!(d!=0.0)){J=mk()|0;k[J>>2]=34}d=+Ik(d,h);break a}else b=e;while(0);E=I+J|0;F=0-E|0;g=0;f:while(1){switch(b|0){case 46:{y=138;break f}case 48:break;default:{e=0;o=0;n=0;break f}}b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0;g=1;continue}else{b=rk(a)|0;g=1;continue}}if((y|0)==138){b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if((b|0)==48){e=0;b=0;while(1){e=tw(e|0,b|0,-1,-1)|0;g=M;b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if((b|0)==48)b=g;else{o=g;g=1;n=1;break}}}else{e=0;o=0;n=1}}k[G>>2]=0;m=b+-48|0;h=(b|0)==46;g:do if(h|m>>>0<10){z=G+496|0;w=0;t=0;u=h;y=o;s=g;x=n;g=0;h=0;n=0;h:while(1){do if(u)if(!x){e=w;o=t;x=1}else{o=y;b=w;m=t;break h}else{u=tw(w|0,t|0,1,0)|0;t=M;v=(b|0)!=48;if((h|0)>=125){if(!v){o=y;w=u;break}k[z>>2]=k[z>>2]|1;o=y;w=u;break}o=G+(h<<2)|0;if(g)m=b+-48+((k[o>>2]|0)*10|0)|0;k[o>>2]=m;g=g+1|0;m=(g|0)==9;o=y;w=u;s=1;g=m?0:g;h=(m&1)+h|0;n=v?u:n}while(0);b=k[D>>2]|0;if(b>>>0<(k[A>>2]|0)>>>0){k[D>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;m=b+-48|0;u=(b|0)==46;if(!(u|m>>>0<10)){m=x;y=161;break g}else y=o}s=(s|0)!=0;y=169}else{w=0;t=0;s=g;m=n;g=0;h=0;n=0;y=161}while(0);do if((y|0)==161){z=(m|0)==0;e=z?w:e;o=z?t:o;s=(s|0)!=0;if(!((b|32|0)==101&s))if((b|0)>-1){b=w;m=t;y=169;break}else{b=w;m=t;y=171;break}m=Dl(a,c)|0;b=M;if((m|0)==0&(b|0)==-2147483648){if(!c){qk(a,0);d=0.0;break}if(!(k[A>>2]|0)){m=0;b=0}else{k[D>>2]=(k[D>>2]|0)+-1;m=0;b=0}}e=tw(m|0,b|0,e|0,o|0)|0;s=w;o=M;m=t;y=173}while(0);if((y|0)==169)if(k[A>>2]|0){k[D>>2]=(k[D>>2]|0)+-1;if(s){s=b;y=173}else y=172}else y=171;if((y|0)==171)if(s){s=b;y=173}else y=172;do if((y|0)==172){J=mk()|0;k[J>>2]=22;qk(a,0);d=0.0}else if((y|0)==173){b=k[G>>2]|0;if(!b){d=+(H|0)*0.0;break}if(((m|0)<0|(m|0)==0&s>>>0<10)&((e|0)==(s|0)&(o|0)==(m|0))?J>>>0>30|(b>>>J|0)==0:0){d=+(H|0)*+(b>>>0);break}a=(I|0)/-2|0;D=((a|0)<0)<<31>>31;if((o|0)>(D|0)|(o|0)==(D|0)&e>>>0>a>>>0){J=mk()|0;k[J>>2]=34;d=+(H|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=I+-106|0;D=((a|0)<0)<<31>>31;if((o|0)<(D|0)|(o|0)==(D|0)&e>>>0>>0){J=mk()|0;k[J>>2]=34;d=+(H|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(g){if((g|0)<9){m=G+(h<<2)|0;b=k[m>>2]|0;do{b=b*10|0;g=g+1|0}while((g|0)!=9);k[m>>2]=b}h=h+1|0}if((n|0)<9?(n|0)<=(e|0)&(e|0)<18:0){if((e|0)==9){d=+(H|0)*+((k[G>>2]|0)>>>0);break}if((e|0)<9){d=+(H|0)*+((k[G>>2]|0)>>>0)/+(k[37312+(8-e<<2)>>2]|0);break}a=J+27+(ia(e,-3)|0)|0;b=k[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){d=+(H|0)*+(b>>>0)*+(k[37312+(e+-10<<2)>>2]|0);break}}b=(e|0)%9|0;if(!b){g=0;b=0}else{s=(e|0)>-1?b:b+9|0;m=k[37312+(8-s<<2)>>2]|0;if(h){n=1e9/(m|0)|0;g=0;b=0;o=0;do{A=G+(o<<2)|0;D=k[A>>2]|0;a=((D>>>0)/(m>>>0)|0)+b|0;k[A>>2]=a;b=ia((D>>>0)%(m>>>0)|0,n)|0;a=(o|0)==(g|0)&(a|0)==0;o=o+1|0;e=a?e+-9|0:e;g=a?o&127:g}while((o|0)!=(h|0));if(b){k[G+(h<<2)>>2]=b;h=h+1|0}}else{g=0;h=0}b=0;e=9-s+e|0}i:while(1){t=(e|0)<18;u=(e|0)==18;v=G+(g<<2)|0;do{if(!t){if(!u)break i;if((k[v>>2]|0)>>>0>=9007199){e=18;break i}}m=0;n=h+127|0;while(1){s=n&127;o=G+(s<<2)|0;n=ww(k[o>>2]|0,0,29)|0;n=tw(n|0,M|0,m|0,0)|0;m=M;if(m>>>0>0|(m|0)==0&n>>>0>1e9){a=Ew(n|0,m|0,1e9,0)|0;n=Fw(n|0,m|0,1e9,0)|0;m=a}else m=0;k[o>>2]=n;a=(s|0)==(g|0);h=(s|0)!=(h+127&127|0)|a?h:(n|0)==0?s:h;if(a)break;else n=s+-1|0}b=b+-29|0}while((m|0)==0);g=g+127&127;if((g|0)==(h|0)){a=h+127&127;h=G+((h+126&127)<<2)|0;k[h>>2]=k[h>>2]|k[G+(a<<2)>>2];h=a}k[G+(g<<2)>>2]=m;e=e+9|0}j:while(1){w=h+1&127;v=G+((h+127&127)<<2)|0;while(1){t=(e|0)==18;u=(e|0)>27?9:1;s=t^1;while(1){n=g&127;o=(n|0)==(h|0);do if(!o){m=k[G+(n<<2)>>2]|0;if(m>>>0<9007199){y=219;break}if(m>>>0>9007199)break;m=g+1&127;if((m|0)==(h|0)){y=219;break}m=k[G+(m<<2)>>2]|0;if(m>>>0<254740991){y=219;break}if(!(m>>>0>254740991|s)){e=n;break j}}else y=219;while(0);if((y|0)==219?(y=0,t):0){y=220;break j}b=b+u|0;if((g|0)==(h|0))g=h;else break}s=(1<>>u;n=g;m=0;o=g;while(1){D=G+(o<<2)|0;a=k[D>>2]|0;g=(a>>>u)+m|0;k[D>>2]=g;m=ia(a&s,t)|0;g=(o|0)==(n|0)&(g|0)==0;o=o+1&127;e=g?e+-9|0:e;g=g?o:n;if((o|0)==(h|0))break;else n=g}if(!m)continue;if((w|0)!=(g|0))break;k[v>>2]=k[v>>2]|1}k[G+(h<<2)>>2]=m;h=w}if((y|0)==220)if(o){k[G+(w+-1<<2)>>2]=0;e=h;h=w}else e=n;d=+((k[G+(e<<2)>>2]|0)>>>0);e=g+1&127;if((e|0)==(h|0)){h=g+2&127;k[G+(h+-1<<2)>>2]=0}q=+(H|0);f=q*(d*1.0e9+ +((k[G+(e<<2)>>2]|0)>>>0));t=b+53|0;o=t-I|0;s=(o|0)<(J|0);e=s&1;n=s?((o|0)<0?0:o):J;if((n|0)<53){L=+Ck(+Hk(1.0,105-n|0),f);j=+Ek(f,+Hk(1.0,53-n|0));p=L;d=j;j=L+(f-j)}else{p=0.0;d=0.0;j=f}m=g+2&127;do if((m|0)==(h|0))f=d;else{m=k[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if(m>>>0>5e8){d=q*.75+d;break}if((g+3&127|0)==(h|0)){d=q*.5+d;break}else{d=q*.75+d;break}}else{if((m|0)==0?(g+3&127|0)==(h|0):0)break;d=q*.25+d}while(0);if((53-n|0)<=1){f=d;break}if(+Ek(d,1.0)!=0.0){f=d;break}f=d+1.0}while(0);d=j+f-p;do if((t&2147483647|0)>(-2-E|0)){if(+X(+d)>=9007199254740992.0){e=s&(n|0)==(o|0)?0:e;b=b+1|0;d=d*.5}if((b+50|0)<=(F|0)?!(f!=0.0&(e|0)!=0):0)break;J=mk()|0;k[J>>2]=34}while(0);d=+Ik(d,b)}while(0);break a}default:{if(k[A>>2]|0)k[D>>2]=(k[D>>2]|0)+-1;J=mk()|0;k[J>>2]=22;qk(a,0);d=0.0;break a}}}}while(0);if((y|0)==23){e=(k[A>>2]|0)==0;if(!e)k[D>>2]=(k[D>>2]|0)+-1;if((c|0)!=0&b>>>0>3)do{if(!e)k[D>>2]=(k[D>>2]|0)+-1;b=b+-1|0}while(b>>>0>3)}d=+(H|0)*C}while(0);r=K;return +d}function pk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(b>>>0>36){e=mk()|0;k[e>>2]=22;e=0;d=0}else{r=a+4|0;q=a+100|0;do{f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0}while((kk(f)|0)!=0);b:do switch(f|0){case 43:case 45:{g=((f|0)==45)<<31>>31;f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0;p=g;break b}else{f=rk(a)|0;p=g;break b}}default:p=0}while(0);g=(b|0)==0;do if((b&-17|0)==0&(f|0)==48){f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;if((f|32|0)!=120)if(g){b=8;n=46;break}else{n=32;break}b=k[r>>2]|0;if(b>>>0<(k[q>>2]|0)>>>0){k[r>>2]=b+1;f=l[b>>0]|0}else f=rk(a)|0;if((l[53879+(f+1)>>0]|0)>15){d=(k[q>>2]|0)==0;if(!d)k[r>>2]=(k[r>>2]|0)+-1;if(!c){qk(a,0);e=0;d=0;break a}if(d){e=0;d=0;break a}k[r>>2]=(k[r>>2]|0)+-1;e=0;d=0;break a}else{b=16;n=46}}else{b=g?10:b;if((l[53879+(f+1)>>0]|0)>>>0>>0)n=32;else{if(k[q>>2]|0)k[r>>2]=(k[r>>2]|0)+-1;qk(a,0);e=mk()|0;k[e>>2]=22;e=0;d=0;break a}}while(0);if((n|0)==32)if((b|0)==10){b=f+-48|0;if(b>>>0<10){f=0;while(1){g=(f*10|0)+b|0;b=k[r>>2]|0;if(b>>>0<(k[q>>2]|0)>>>0){k[r>>2]=b+1;f=l[b>>0]|0}else f=rk(a)|0;b=f+-48|0;if(!(b>>>0<10&g>>>0<429496729)){b=g;break}else f=g}g=0}else{b=0;g=0}c=f+-48|0;if(c>>>0<10){while(1){h=Dw(b|0,g|0,10,0)|0;j=M;m=((c|0)<0)<<31>>31;o=~m;if(j>>>0>o>>>0|(j|0)==(o|0)&h>>>0>~c>>>0){h=b;break}b=tw(h|0,j|0,c|0,m|0)|0;g=M;f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;c=f+-48|0;if(!(c>>>0<10&(g>>>0<429496729|(g|0)==429496729&b>>>0<2576980378))){h=b;break}}if(c>>>0>9){f=h;b=p}else{b=10;n=72}}else{f=b;b=p}}else n=46;c:do if((n|0)==46){if(!(b+-1&b)){n=i[54136+((b*23|0)>>>5&7)>>0]|0;g=i[53879+(f+1)>>0]|0;c=g&255;if(c>>>0>>0){f=0;while(1){h=c|f<>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;g=i[53879+(f+1)>>0]|0;c=g&255;if(!(h>>>0<134217728&c>>>0>>0))break;else f=h}c=0}else{c=0;h=0}j=uw(-1,-1,n|0)|0;m=M;if((g&255)>>>0>=b>>>0|(c>>>0>m>>>0|(c|0)==(m|0)&h>>>0>j>>>0)){g=c;n=72;break}else f=c;while(1){h=ww(h|0,f|0,n|0)|0;c=M;h=g&255|h;f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;g=i[53879+(f+1)>>0]|0;if((g&255)>>>0>=b>>>0|(c>>>0>m>>>0|(c|0)==(m|0)&h>>>0>j>>>0)){g=c;n=72;break c}else f=c}}g=i[53879+(f+1)>>0]|0;c=g&255;if(c>>>0>>0){f=0;while(1){h=c+(ia(f,b)|0)|0;f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;g=i[53879+(f+1)>>0]|0;c=g&255;if(!(h>>>0<119304647&c>>>0>>0))break;else f=h}c=0}else{h=0;c=0}if((g&255)>>>0>>0){n=Ew(-1,-1,b|0,0)|0;o=M;m=c;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&h>>>0>n>>>0){g=m;n=72;break c}c=Dw(h|0,m|0,b|0,0)|0;j=M;g=g&255;if(j>>>0>4294967295|(j|0)==-1&c>>>0>~g>>>0){g=m;n=72;break c}h=tw(g|0,0,c|0,j|0)|0;c=M;f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;g=i[53879+(f+1)>>0]|0;if((g&255)>>>0>=b>>>0){g=c;n=72;break}else m=c}}else{g=c;n=72}}while(0);if((n|0)==72)if((l[53879+(f+1)>>0]|0)>>>0>>0){do{f=k[r>>2]|0;if(f>>>0<(k[q>>2]|0)>>>0){k[r>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0}while((l[53879+(f+1)>>0]|0)>>>0>>0);g=mk()|0;k[g>>2]=34;g=e;f=d;b=(d&1|0)==0&0==0?p:0}else{f=h;b=p}if(k[q>>2]|0)k[r>>2]=(k[r>>2]|0)+-1;if(!(g>>>0>>0|(g|0)==(e|0)&f>>>0>>0)){if(!((d&1|0)!=0|0!=0|(b|0)!=0)){r=mk()|0;k[r>>2]=34;d=tw(d|0,e|0,-1,-1)|0;e=M;break}if(g>>>0>e>>>0|(g|0)==(e|0)&f>>>0>d>>>0){r=mk()|0;k[r>>2]=34;break}}d=((b|0)<0)<<31>>31;d=rw(f^b|0,g^d|0,b|0,d|0)|0;e=M}while(0);M=e;return d|0}function qk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a+104>>2]=b;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=d-c|0;k[a+108>>2]=e;if((b|0)!=0&(e|0)>(b|0))k[a+100>>2]=c+b;else k[a+100>>2]=d;return}function rk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;c=a+104|0;f=k[c>>2]|0;if((f|0)!=0?(k[a+108>>2]|0)>=(f|0):0)g=4;else{b=cl(a)|0;if((b|0)>=0){e=k[c>>2]|0;c=a+8|0;if(e){d=k[c>>2]|0;f=k[a+4>>2]|0;c=d;e=e-(k[a+108>>2]|0)+-1|0;if((c-f|0)>(e|0))k[a+100>>2]=f+e;else g=9}else{d=k[c>>2]|0;c=d;g=9}if((g|0)==9)k[a+100>>2]=c;c=k[a+4>>2]|0;if(d){a=a+108|0;k[a>>2]=d+1-c+(k[a>>2]|0)}c=c+-1|0;if((l[c>>0]|0|0)!=(b|0))i[c>>0]=b}else g=4}if((g|0)==4){k[a+100>>2]=0;b=-1}return b|0}function sk(a){a=a|0;var b=0;if(a>>>0>4294963200){b=mk()|0;k[b>>2]=0-a;a=-1}return a|0}function tk(a){a=a|0;return 0}function uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return d|0}function vk(a,b){a=a|0;b=b|0;return -1|0}function wk(a){a=a|0;Ql(a);return}function xk(a,b){a=a|0;b=b|0;return (a+-48|0)>>>0<10|0}function yk(a,b){a=a|0;b=b|0;return lk(a)|0}function zk(a,b,c){a=a|0;b=b|0;c=c|0;if(((i[b>>0]|0)!=0?(vl(b,58885)|0)!=0:0)?(vl(b,54145)|0)!=0:0)c=0;else if(!c)c=Rl(1,4)|0;return c|0}function Ak(a){a=a|0;var b=0,c=0;b=(kb()|0)+176|0;c=k[b>>2]|0;if(a)k[b>>2]=a;return c|0}function Bk(a,b){a=+a;b=+b;var c=0,d=0;p[t>>3]=a;d=k[t>>2]|0;c=k[t+4>>2]|0;p[t>>3]=b;c=k[t+4>>2]&-2147483648|c&2147483647;k[t>>2]=d;k[t+4>>2]=c;return +(+p[t>>3])}function Ck(a,b){a=+a;b=+b;return +(+Bk(a,b))}function Dk(a,b){a=+a;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;p[t>>3]=a;c=k[t>>2]|0;j=k[t+4>>2]|0;p[t>>3]=b;l=k[t>>2]|0;m=k[t+4>>2]|0;d=uw(c|0,j|0,52)|0;d=d&2047;h=uw(l|0,m|0,52)|0;h=h&2047;n=j&-2147483648;g=ww(l|0,m|0,1)|0;i=M;a:do if(!((g|0)==0&(i|0)==0)?(f=m&2147483647,!(f>>>0>2146435072|(f|0)==2146435072&l>>>0>0|(d|0)==2047)):0){e=ww(c|0,j|0,1)|0;f=M;if(!(f>>>0>i>>>0|(f|0)==(i|0)&e>>>0>g>>>0))return +((e|0)==(g|0)&(f|0)==(i|0)?a*0.0:a);if(!d){d=ww(c|0,j|0,12)|0;e=M;if((e|0)>-1|(e|0)==-1&d>>>0>4294967295){f=d;d=0;do{d=d+-1|0;f=ww(f|0,e|0,1)|0;e=M}while((e|0)>-1|(e|0)==-1&f>>>0>4294967295)}else d=0;c=ww(c|0,j|0,1-d|0)|0;e=M}else e=j&1048575|1048576;if(!h){f=ww(l|0,m|0,12)|0;g=M;if((g|0)>-1|(g|0)==-1&f>>>0>4294967295){h=0;do{h=h+-1|0;f=ww(f|0,g|0,1)|0;g=M}while((g|0)>-1|(g|0)==-1&f>>>0>4294967295)}else h=0;l=ww(l|0,m|0,1-h|0)|0;j=M}else j=m&1048575|1048576;i=rw(c|0,e|0,l|0,j|0)|0;g=M;f=(g|0)>-1|(g|0)==-1&i>>>0>4294967295;b:do if((d|0)>(h|0)){while(1){if(f)if((c|0)==(l|0)&(e|0)==(j|0))break;else{c=i;e=g}c=ww(c|0,e|0,1)|0;e=M;d=d+-1|0;i=rw(c|0,e|0,l|0,j|0)|0;g=M;f=(g|0)>-1|(g|0)==-1&i>>>0>4294967295;if((d|0)<=(h|0))break b}b=a*0.0;break a}while(0);if(f)if((c|0)==(l|0)&(e|0)==(j|0)){b=a*0.0;break}else{e=g;c=i}if(e>>>0<1048576|(e|0)==1048576&c>>>0<0)do{c=ww(c|0,e|0,1)|0;e=M;d=d+-1|0}while(e>>>0<1048576|(e|0)==1048576&c>>>0<0);if((d|0)>0){m=tw(c|0,e|0,0,-1048576)|0;c=M;d=ww(d|0,0,52)|0;c=c|M;d=m|d}else{d=uw(c|0,e|0,1-d|0)|0;c=M}k[t>>2]=d;k[t+4>>2]=c|n;b=+p[t>>3]}else o=3;while(0);if((o|0)==3){b=a*b;b=b/b}return +b}function Ek(a,b){a=+a;b=+b;return +(+Dk(a,b))}function Fk(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=uw(c|0,d|0,52)|0;e=e&2047;switch(e|0){case 0:{if(a!=0.0){a=+Fk(a*18446744073709551616.0,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=e+-1022;k[t>>2]=c;k[t+4>>2]=d&-2146435073|1071644672;a=+p[t>>3]}}return +a}function Gk(a,b){a=+a;b=b|0;return +(+Fk(a,b))}function Hk(a,b){a=+a;b=b|0;var c=0;if((b|0)>1023){a=a*8988465674311579538646525.0e283;c=b+-1023|0;if((c|0)>1023){c=b+-2046|0;c=(c|0)>1023?1023:c;a=a*8988465674311579538646525.0e283}}else if((b|0)<-1022){a=a*2.2250738585072014e-308;c=b+1022|0;if((c|0)<-1022){c=b+2044|0;c=(c|0)<-1022?-1022:c;a=a*2.2250738585072014e-308}}else c=b;c=ww(c+1023|0,0,52)|0;b=M;k[t>>2]=c;k[t+4>>2]=b;return +(a*+p[t>>3])}function Ik(a,b){a=+a;b=b|0;return +(+Hk(a,b))}function Jk(a,b,c){a=a|0;b=b|0;c=c|0;return Kk(0,a,b,(c|0)!=0?c:37344)|0}function Kk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0;j=r;r=r+16|0;e=j;g=(d|0)==0?37348:d;d=k[g>>2]|0;a:do if(!b)if(!d)d=0;else h=15;else{f=(a|0)==0?e:a;if(!c)d=-2;else{if(!d){d=i[b>>0]|0;e=d&255;if(d<<24>>24>-1){k[f>>2]=e;d=d<<24>>24!=0&1;break}d=e+-194|0;if(d>>>0>50){h=15;break}d=k[37076+(d<<2)>>2]|0;e=c+-1|0;if(e){b=b+1|0;h=9}}else{e=c;h=9}b:do if((h|0)==9){a=i[b>>0]|0;l=(a&255)>>>3;if((l+-16|l+(d>>26))>>>0>7){h=15;break a}while(1){b=b+1|0;d=(a&255)+-128|d<<6;e=e+-1|0;if((d|0)>=0)break;if(!e)break b;a=i[b>>0]|0;if((a&-64)<<24>>24!=-128){h=15;break a}}k[g>>2]=0;k[f>>2]=d;d=c-e|0;break a}while(0);k[g>>2]=d;d=-2}}while(0);if((h|0)==15){k[g>>2]=0;d=mk()|0;k[d>>2]=84;d=-1}r=j;return d|0}function Lk(a){a=a|0;if(!a)a=1;else a=(k[a>>2]|0)==0;return a&1|0}function Mk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+1040|0;j=n+8|0;m=n;i=k[b>>2]|0;k[m>>2]=i;l=(a|0)!=0;d=l?d:256;a=l?a:j;f=i;a:do if((d|0)!=0&(i|0)!=0){h=d;i=f;d=0;while(1){f=c>>>2;g=f>>>0>=h>>>0;if(!(c>>>0>131|g)){f=i;break a}f=g?h:f;c=c-f|0;f=Nk(a,m,f,e)|0;if((f|0)==-1){d=c;break}o=(a|0)==(j|0);i=o?0:f;g=h-i|0;a=o?a:a+(f<<2)|0;d=f+d|0;f=k[m>>2]|0;if((h|0)!=(i|0)&(f|0)!=0){h=g;i=f}else{h=g;break a}}c=d;h=0;f=k[m>>2]|0;d=-1}else{h=d;d=0}while(0);b:do if((f|0)!=0?(h|0)!=0&(c|0)!=0:0){g=f;f=a;while(1){a=Kk(f,g,c,e)|0;if((a+2|0)>>>0<3)break;g=(k[m>>2]|0)+a|0;k[m>>2]=g;h=h+-1|0;d=d+1|0;if(!((h|0)!=0&(c|0)!=(a|0)))break b;else{c=c-a|0;f=f+4|0}}switch(a|0){case -1:{d=-1;break b}case 0:{k[m>>2]=0;break b}default:{k[e>>2]=0;break b}}}while(0);if(l)k[b>>2]=k[m>>2];r=n;return d|0}function Nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0;e=k[b>>2]|0;if((d|0)!=0?(f=k[d>>2]|0,(f|0)!=0):0)if(!a){d=c;g=e;m=16}else{k[d>>2]=0;j=a;d=c;h=f;m=37}else if(!a){d=c;m=7}else{f=a;d=c;m=6}a:while(1)if((m|0)==6){if(!d){m=26;break}else a=f;while(1){f=i[e>>0]|0;do if(((f&255)+-1|0)>>>0<127?d>>>0>4&(e&3|0)==0:0){g=e;while(1){e=k[g>>2]|0;if((e+-16843009|e)&-2139062144){f=e;e=g;m=32;break}k[a>>2]=e&255;k[a+4>>2]=l[g+1>>0];k[a+8>>2]=l[g+2>>0];e=g+4|0;f=a+16|0;k[a+12>>2]=l[g+3>>0];d=d+-4|0;if(d>>>0>4){a=f;g=e}else{m=31;break}}if((m|0)==31){a=f;f=i[e>>0]|0;break}else if((m|0)==32){f=f&255;break}}while(0);f=f&255;if((f+-1|0)>>>0>=127)break;e=e+1|0;k[a>>2]=f;d=d+-1|0;if(!d){m=26;break a}else a=a+4|0}f=f+-194|0;if(f>>>0>50){m=48;break}j=a;h=k[37076+(f<<2)>>2]|0;e=e+1|0;m=37;continue}else if((m|0)==7){f=i[e>>0]|0;if(((f&255)+-1|0)>>>0<127?(e&3|0)==0:0){f=k[e>>2]|0;if(!((f+-16843009|f)&-2139062144))do{e=e+4|0;d=d+-4|0;f=k[e>>2]|0}while(((f+-16843009|f)&-2139062144|0)==0);f=f&255}f=f&255;if((f+-1|0)>>>0<127){d=d+-1|0;e=e+1|0;m=7;continue}f=f+-194|0;if(f>>>0>50){m=48;break}f=k[37076+(f<<2)>>2]|0;g=e+1|0;m=16;continue}else if((m|0)==16){m=(l[g>>0]|0)>>>3;if((m+-16|m+(f>>26))>>>0>7){m=17;break}e=g+1|0;if(f&33554432){if((i[e>>0]&-64)<<24>>24!=-128){m=20;break}e=g+2|0;if(f&524288){if((i[e>>0]&-64)<<24>>24!=-128){m=23;break}e=g+3|0}}d=d+-1|0;m=7;continue}else if((m|0)==37){f=l[e>>0]|0;m=f>>>3;if((m+-16|m+(h>>26))>>>0>7){m=38;break}g=e+1|0;a=f+-128|h<<6;if((a|0)<0){f=l[g>>0]|0;if((f&192|0)!=128){m=41;break}g=e+2|0;a=f+-128|a<<6;if((a|0)<0){f=l[g>>0]|0;if((f&192|0)!=128){m=44;break}a=f+-128|a<<6;e=e+3|0}else e=g}else e=g;k[j>>2]=a;f=j+4|0;d=d+-1|0;m=6;continue}if((m|0)==17){e=g+-1|0;m=47}else if((m|0)==20){e=g+-1|0;m=47}else if((m|0)==23){e=g+-1|0;m=47}else if((m|0)==26)k[b>>2]=e;else if((m|0)==38){a=j;f=h;e=e+-1|0;m=47}else if((m|0)==41){d=j;c=e+-1|0;m=52}else if((m|0)==44){d=j;c=e+-1|0;m=52}if((m|0)==47)if(!f)m=48;else{d=a;c=e;m=52}if((m|0)==48)if(!(i[e>>0]|0)){if(a){k[a>>2]=0;k[b>>2]=0}c=c-d|0}else{d=a;c=e;m=52}if((m|0)==52){m=mk()|0;k[m>>2]=84;if(!d)c=-1;else{k[b>>2]=c;c=-1}}return c|0}function Ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+16|0;d=g;a:do if(!b)d=0;else{do if(c){f=(a|0)==0?d:a;d=i[b>>0]|0;a=d&255;if(d<<24>>24>-1){k[f>>2]=a;d=d<<24>>24!=0&1;break a}d=a+-194|0;if(d>>>0<=50){a=b+1|0;e=k[37076+(d<<2)>>2]|0;if(c>>>0<4?(e&-2147483648>>>((c*6|0)+-6|0)|0)!=0:0)break;d=l[a>>0]|0;c=d>>>3;if((c+-16|c+(e>>26))>>>0<=7){d=d+-128|e<<6;if((d|0)>=0){k[f>>2]=d;d=2;break a}a=l[b+2>>0]|0;if((a&192|0)==128){a=a+-128|d<<6;if((a|0)>=0){k[f>>2]=a;d=3;break a}d=l[b+3>>0]|0;if((d&192|0)==128){k[f>>2]=d+-128|a<<6;d=4;break a}}}}}while(0);d=mk()|0;k[d>>2]=84;d=-1}while(0);r=g;return d|0}function Pk(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=mk()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Qk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;l=r;r=r+272|0;h=l+8|0;j=l;g=k[b>>2]|0;k[j>>2]=g;i=(a|0)!=0;e=i?d:256;d=i?a:h;a=g;a:do if((e|0)!=0&(g|0)!=0){g=e;f=a;e=0;while(1){a=c>>>0>=g>>>0;if(!(a|c>>>0>32)){a=f;break a}a=a?g:c;c=c-a|0;a=Rk(d,j,a,0)|0;if((a|0)==-1){e=c;break}n=(d|0)==(h|0);m=n?0:a;f=g-m|0;d=n?d:d+a|0;e=a+e|0;a=k[j>>2]|0;if((g|0)!=(m|0)&(a|0)!=0){g=f;f=a}else{g=f;break a}}c=e;g=0;a=k[j>>2]|0;e=-1}else{g=e;e=0}while(0);b:do if((a|0)!=0?(g|0)!=0&(c|0)!=0:0){f=a;a=d;while(1){d=Pk(a,k[f>>2]|0,0)|0;if((d+1|0)>>>0<2)break;f=(k[j>>2]|0)+4|0;k[j>>2]=f;c=c+-1|0;e=e+1|0;if(!((g|0)!=(d|0)&(c|0)!=0))break b;else{g=g-d|0;a=a+d|0}}if(!d)k[j>>2]=0;else e=-1}while(0);if(i)k[b>>2]=k[j>>2];r=l;return e|0}function Rk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=r;r=r+16|0;g=h;a:do if(!a){a=k[b>>2]|0;d=k[a>>2]|0;if(!d)c=0;else{c=0;do{if(d>>>0>127){d=Pk(g,d,0)|0;if((d|0)==-1){c=-1;break a}}else d=1;c=d+c|0;a=a+4|0;d=k[a>>2]|0}while((d|0)!=0)}}else{b:do if(c>>>0>3){d=c;e=k[b>>2]|0;while(1){f=k[e>>2]|0;if((f+-1|0)>>>0>126){if(!f)break;f=Pk(a,f,0)|0;if((f|0)==-1){c=-1;break a}a=a+f|0;d=d-f|0}else{i[a>>0]=f;a=a+1|0;d=d+-1|0;e=k[b>>2]|0}e=e+4|0;k[b>>2]=e;if(d>>>0<=3)break b}i[a>>0]=0;k[b>>2]=0;c=c-d|0;break a}else d=c;while(0);if(d){e=k[b>>2]|0;while(1){f=k[e>>2]|0;if((f+-1|0)>>>0>126){if(!f){e=19;break}f=Pk(g,f,0)|0;if((f|0)==-1){c=-1;break a}if(d>>>0>>0){e=22;break}Pk(a,k[e>>2]|0,0)|0;a=a+f|0;d=d-f|0}else{i[a>>0]=f;a=a+1|0;d=d+-1|0;e=k[b>>2]|0}e=e+4|0;k[b>>2]=e;if(!d)break a}if((e|0)==19){i[a>>0]=0;k[b>>2]=0;c=c-d|0;break}else if((e|0)==22){c=c-d|0;break}}}while(0);r=h;return c|0}function Sk(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Pk(a,b,0)|0;return a|0}function Tk(a){a=a|0;return 0}function Uk(a){a=a|0;return}function Vk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;h=j;g=b&255;i[h>>0]=g;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(bl(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){d=a+20|0;f=k[d>>2]|0;if(f>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[d>>2]=f+1;i[f>>0]=g;break}if((Qb[k[a+36>>2]&63](a,h,1)|0)==1)c=l[h>>0]|0;else c=-1}while(0);r=j;return c|0}function Wk(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=sk(wb(6,c|0)|0)|0;r=b;return a|0}function Xk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;l=r;r=r+48|0;f=l+16|0;e=l;d=l+32|0;k[d>>2]=b;g=d+4|0;j=a+48|0;m=k[j>>2]|0;k[g>>2]=c-((m|0)!=0&1);h=a+44|0;k[d+8>>2]=k[h>>2];k[d+12>>2]=m;if(!(k[9258]|0)){k[f>>2]=k[a+60>>2];k[f+4>>2]=d;k[f+8>>2]=2;d=sk(Eb(145,f|0)|0)|0}else{xb(185,a|0);k[e>>2]=k[a+60>>2];k[e+4>>2]=d;k[e+8>>2]=2;d=sk(Eb(145,e|0)|0)|0;pb(0)}if((d|0)>=1){g=k[g>>2]|0;if(d>>>0>g>>>0){f=k[h>>2]|0;e=a+4|0;k[e>>2]=f;k[a+8>>2]=f+(d-g);if(!(k[j>>2]|0))d=c;else{k[e>>2]=f+1;i[b+(c+-1)>>0]=i[f>>0]|0;d=c}}}else{k[a>>2]=k[a>>2]|d&48^16;k[a+8>>2]=0;k[a+4>>2]=0}r=l;return d|0}function Yk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((sk(Db(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function Zk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;d=p+32|0;n=a+28|0;e=k[n>>2]|0;k[d>>2]=e;o=a+20|0;e=(k[o>>2]|0)-e|0;k[d+4>>2]=e;k[d+8>>2]=b;k[d+12>>2]=c;i=a+60|0;j=a+44|0;b=2;e=e+c|0;while(1){if(!(k[9258]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=d;k[m+8>>2]=b;g=sk(Fb(146,m|0)|0)|0}else{xb(186,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=d;k[l+8>>2]=b;g=sk(Fb(146,l|0)|0)|0;pb(0)}if((e|0)==(g|0)){e=6;break}if((g|0)<0){e=8;break}e=e-g|0;f=k[d+4>>2]|0;if(g>>>0<=f>>>0)if((b|0)==2){k[n>>2]=(k[n>>2]|0)+g;h=f;b=2}else h=f;else{h=k[j>>2]|0;k[n>>2]=h;k[o>>2]=h;h=k[d+12>>2]|0;g=g-f|0;d=d+8|0;b=b+-1|0}k[d>>2]=(k[d>>2]|0)+g;k[d+4>>2]=h-g}if((e|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((e|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((b|0)==2)c=0;else c=c-(k[d+4>>2]|0)|0}r=p;return c|0}function _k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+80|0;d=e;k[a+36>>2]=8;if((k[a>>2]&64|0)==0?(k[d>>2]=k[a+60>>2],k[d+4>>2]=21505,k[d+8>>2]=e+12,(nb(54,d|0)|0)!=0):0)i[a+75>>0]=-1;d=Zk(a,b,c)|0;r=e;return d|0}function $k(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+84|0;f=k[d>>2]|0;g=c+256|0;e=tl(f,0,g)|0;e=(e|0)==0?g:e-f|0;c=e>>>0>>0?e:c;vw(b|0,f|0,c|0)|0;k[a+4>>2]=f+c;b=f+e|0;k[a+8>>2]=b;k[d>>2]=b;return c|0}function al(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=a+20|0;c=a+44|0;if((k[b>>2]|0)>>>0>(k[c>>2]|0)>>>0)Qb[k[a+36>>2]&63](a,0,0)|0;k[a+16>>2]=0;k[a+28>>2]=0;k[b>>2]=0;b=k[a>>2]|0;if(b&20)if(!(b&4))b=-1;else{k[a>>2]=b|32;b=-1}else{b=k[c>>2]|0;k[a+8>>2]=b;k[a+4>>2]=b;b=0}return b|0}function bl(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;b=k[a+44>>2]|0;k[a+28>>2]=b;k[a+20>>2]=b;k[a+16>>2]=b+(k[a+48>>2]|0);b=0}else{k[a>>2]=b|32;b=-1}return b|0}function cl(a){a=a|0;var b=0,c=0;c=r;r=r+16|0;b=c;if((k[a+8>>2]|0)==0?(al(a)|0)!=0:0)b=-1;else if((Qb[k[a+32>>2]&63](a,b,1)|0)==1)b=l[b>>0]|0;else b=-1;r=c;return b|0}function dl(a){a=a|0;var b=0,c=0;do if(a){if((k[a+76>>2]|0)<=-1){b=Gl(a)|0;break}c=(Tk(a)|0)==0;b=Gl(a)|0;if(!c)Uk(a)}else{if(!(k[9323]|0))b=0;else b=dl(k[9323]|0)|0;Na(37060);a=k[9264]|0;if(a)do{if((k[a+76>>2]|0)>-1)c=Tk(a)|0;else c=0;if((k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0)b=Gl(a)|0|b;if(c)Uk(a);a=k[a+56>>2]|0}while((a|0)!=0);ob(37060)}while(0);return b|0}function el(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(Tk(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(d=b+20|0,e=k[d>>2]|0,e>>>0<(k[b+16>>2]|0)>>>0):0){k[d>>2]=e+1;i[e>>0]=a;c=a&255}else c=Vk(b,a)|0;Uk(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(f=b+20|0,c=k[f>>2]|0,c>>>0<(k[b+16>>2]|0)>>>0):0){k[f>>2]=c+1;i[c>>0]=a;c=a&255;break}c=Vk(b,a)|0}while(0);return c|0}function fl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(bl(c)|0)){e=k[d>>2]|0;f=4}else d=0;else f=4;a:do if((f|0)==4){g=c+20|0;f=k[g>>2]|0;if((e-f|0)>>>0>>0){d=Qb[k[c+36>>2]&63](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){e=f;d=0;break b}e=d+-1|0;if((i[a+e>>0]|0)==10)break;else d=e}if((Qb[k[c+36>>2]&63](c,a,d)|0)>>>0>>0)break a;b=b-d|0;a=a+d|0;e=k[g>>2]|0}else{e=f;d=0}while(0);vw(e|0,a|0,b|0)|0;k[g>>2]=(k[g>>2]|0)+b;d=d+b|0}while(0);return d|0}function gl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ia(c,b)|0;if((k[d+76>>2]|0)>-1){f=(Tk(d)|0)==0;a=fl(a,e,d)|0;if(!f)Uk(d)}else a=fl(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function hl(a){a=a|0;var b=0,c=0,d=0;if((k[a+76>>2]|0)>=0?(Tk(a)|0)!=0:0){b=a+4|0;c=k[b>>2]|0;if(c>>>0<(k[a+8>>2]|0)>>>0){k[b>>2]=c+1;b=l[c>>0]|0}else b=cl(a)|0}else d=3;do if((d|0)==3){b=a+4|0;c=k[b>>2]|0;if(c>>>0<(k[a+8>>2]|0)>>>0){k[b>>2]=c+1;b=l[c>>0]|0;break}else{b=cl(a)|0;break}}while(0);return b|0}function il(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=ol(a,b,c,f)|0;r=e;return d|0}function jl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=pl(a,b,e)|0;r=d;return c|0}function kl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;do if((a|0)!=-1){if((k[b+76>>2]|0)>-1)e=Tk(b)|0;else e=0;if(!((k[b+8>>2]|0)==0?(al(b)|0)!=0:0))f=6;if((f|0)==6?(c=b+4|0,d=k[c>>2]|0,d>>>0>((k[b+44>>2]|0)+-8|0)>>>0):0){f=d+-1|0;k[c>>2]=f;i[f>>0]=a;k[b>>2]=k[b>>2]&-17;if(!e)break;Uk(b);break}if(e){Uk(b);a=-1}else a=-1}else a=-1;while(0);return a|0}function ll(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;h=r;r=r+16|0;d=h;e=Pl(240)|0;do if(e){k[d>>2]=k[c>>2];d=ol(e,240,b,d)|0;if(d>>>0<240){b=Sl(e,d+1|0)|0;k[a>>2]=(b|0)!=0?b:e;break}Ql(e);if((d|0)>=0?(g=d+1|0,f=Pl(g)|0,k[a>>2]=f,(f|0)!=0):0)d=ol(f,g,b,c)|0;else d=-1}else d=-1;while(0);r=h;return d|0}function ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;n=s+80|0;q=s+96|0;p=s;o=s+136|0;d=q;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[n>>2]=k[c>>2];if((Hl(0,b,n,p,q)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)l=Tk(a)|0;else l=0;c=k[a>>2]|0;m=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;c=a+48|0;if(!(k[c>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=o;g=a+28|0;k[g>>2]=o;h=a+20|0;k[h>>2]=o;k[c>>2]=80;j=a+16|0;k[j>>2]=o+80;d=Hl(a,b,n,p,q)|0;if(f){Qb[k[a+36>>2]&63](a,0,0)|0;d=(k[h>>2]|0)==0?-1:d;k[e>>2]=f;k[c>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else d=Hl(a,b,n,p,q)|0;c=k[a>>2]|0;k[a>>2]=c|m;if(l)Uk(a);c=(c&32|0)==0?d:-1}r=s;return c|0}function nl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0.0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0;P=r;r=r+304|0;G=P+16|0;I=P+8|0;H=P+33|0;J=P;y=P+32|0;if((k[a+76>>2]|0)>-1)O=Tk(a)|0;else O=0;d=i[b>>0]|0;a:do if(d<<24>>24){K=a+4|0;L=a+100|0;F=a+108|0;z=a+8|0;A=H+10|0;B=H+33|0;C=I+4|0;D=H+46|0;E=H+94|0;f=d;d=0;g=b;s=0;e=0;b=0;b:while(1){c:do if(!(kk(f&255)|0)){f=(i[g>>0]|0)==37;d:do if(f){n=g+1|0;h=i[n>>0]|0;e:do switch(h<<24>>24){case 37:break d;case 42:{x=0;h=g+2|0;break}default:{h=(h&255)+-48|0;if(h>>>0<10?(i[g+2>>0]|0)==36:0){k[G>>2]=k[c>>2];while(1){x=(k[G>>2]|0)+(4-1)&~(4-1);f=k[x>>2]|0;k[G>>2]=x+4;if(h>>>0>1)h=h+-1|0;else break}x=f;h=g+3|0;break e}h=(k[c>>2]|0)+(4-1)&~(4-1);x=k[h>>2]|0;k[c>>2]=h+4;h=n}}while(0);f=i[h>>0]|0;g=f&255;if((g+-48|0)>>>0<10){f=0;while(1){n=(f*10|0)+-48+g|0;h=h+1|0;f=i[h>>0]|0;g=f&255;if((g+-48|0)>>>0>=10)break;else f=n}}else n=0;if(f<<24>>24==109){h=h+1|0;q=i[h>>0]|0;f=(x|0)!=0&1;e=0;b=0}else{q=f;f=0}g=h+1|0;switch(q&255|0){case 104:{w=(i[g>>0]|0)==104;g=w?h+2|0:g;h=w?-2:-1;break}case 108:{w=(i[g>>0]|0)==108;g=w?h+2|0:g;h=w?3:1;break}case 106:{h=3;break}case 116:case 122:{h=1;break}case 76:{h=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{g=h;h=0;break}default:{N=152;break b}}q=l[g>>0]|0;t=(q&47|0)==3;q=t?q|32:q;t=t?1:h;switch(q|0){case 99:{w=s;v=(n|0)<1?1:n;break}case 91:{w=s;v=n;break}case 110:{if(!x){h=s;break c}switch(t|0){case -2:{i[x>>0]=s;h=s;break c}case -1:{j[x>>1]=s;h=s;break c}case 0:{k[x>>2]=s;h=s;break c}case 1:{k[x>>2]=s;h=s;break c}case 3:{h=x;k[h>>2]=s;k[h+4>>2]=((s|0)<0)<<31>>31;h=s;break c}default:{h=s;break c}}}default:{qk(a,0);do{h=k[K>>2]|0;if(h>>>0<(k[L>>2]|0)>>>0){k[K>>2]=h+1;h=l[h>>0]|0}else h=rk(a)|0}while((kk(h)|0)!=0);h=k[K>>2]|0;if(k[L>>2]|0){h=h+-1|0;k[K>>2]=h}w=(k[F>>2]|0)+s+h-(k[z>>2]|0)|0;v=n}}qk(a,v);h=k[K>>2]|0;n=k[L>>2]|0;if(h>>>0>>0)k[K>>2]=h+1;else{if((rk(a)|0)<0){N=152;break b}n=k[L>>2]|0}if(n)k[K>>2]=(k[K>>2]|0)+-1;f:do switch(q|0){case 91:case 99:case 115:{u=(q|0)==99;g:do if((q&239|0)==99){sw(H|0,-1,257)|0;i[H>>0]=0;if((q|0)==115){i[B>>0]=0;i[A>>0]=0;i[A+1>>0]=0;i[A+2>>0]=0;i[A+3>>0]=0;i[A+4>>0]=0}}else{Q=g+1|0;s=(i[Q>>0]|0)==94;h=s&1;q=s?Q:g;g=s?g+2|0:Q;sw(H|0,s&1|0,257)|0;i[H>>0]=0;switch(i[g>>0]|0){case 45:{s=(h^1)&255;i[D>>0]=s;g=q+2|0;break}case 93:{s=(h^1)&255;i[E>>0]=s;g=q+2|0;break}default:s=(h^1)&255}while(1){h=i[g>>0]|0;h:do switch(h<<24>>24){case 0:{N=152;break b}case 93:break g;case 45:{q=g+1|0;h=i[q>>0]|0;switch(h<<24>>24){case 93:case 0:{h=45;break h}default:{}}g=i[g+-1>>0]|0;if((g&255)<(h&255)){g=g&255;do{g=g+1|0;i[H+g>>0]=s;h=i[q>>0]|0}while((g|0)<(h&255|0));g=q}else g=q;break}default:{}}while(0);i[H+((h&255)+1)>>0]=s;g=g+1|0}}while(0);q=u?v+1|0:31;s=(t|0)==1;t=(f|0)!=0;i:do if(s){if(t){b=Pl(q<<2)|0;if(!b){e=0;N=152;break b}}else b=x;k[I>>2]=0;k[C>>2]=0;e=0;j:while(1){n=(b|0)==0;do{k:while(1){h=k[K>>2]|0;if(h>>>0<(k[L>>2]|0)>>>0){k[K>>2]=h+1;h=l[h>>0]|0}else h=rk(a)|0;if(!(i[H+(h+1)>>0]|0))break j;i[y>>0]=h;switch(Kk(J,y,1,I)|0){case -1:{e=0;N=152;break b}case -2:break;default:break k}}if(!n){k[b+(e<<2)>>2]=k[J>>2];e=e+1|0}}while(!(t&(e|0)==(q|0)));e=q<<1|1;h=Sl(b,e<<2)|0;if(!h){e=0;N=152;break b}Q=q;q=e;b=h;e=Q}if(!(Lk(I)|0)){e=0;N=152;break b}else{n=e;e=0}}else{if(t){e=Pl(q)|0;if(!e){e=0;b=0;N=152;break b}else h=0;while(1){do{b=k[K>>2]|0;if(b>>>0<(k[L>>2]|0)>>>0){k[K>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if(!(i[H+(b+1)>>0]|0)){n=h;b=0;break i}i[e+h>>0]=b;h=h+1|0}while((h|0)!=(q|0));b=q<<1|1;h=Sl(e,b)|0;if(!h){b=0;N=152;break b}else{Q=q;q=b;e=h;h=Q}}}if(!x){e=n;while(1){b=k[K>>2]|0;if(b>>>0>>0){k[K>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if(!(i[H+(b+1)>>0]|0)){n=0;e=0;b=0;break i}e=k[L>>2]|0}}else{e=0;while(1){b=k[K>>2]|0;if(b>>>0>>0){k[K>>2]=b+1;b=l[b>>0]|0}else b=rk(a)|0;if(!(i[H+(b+1)>>0]|0)){n=e;e=x;b=0;break i}i[x+e>>0]=b;n=k[L>>2]|0;e=e+1|0}}}while(0);h=k[K>>2]|0;if(k[L>>2]|0){h=h+-1|0;k[K>>2]=h}h=h-(k[z>>2]|0)+(k[F>>2]|0)|0;if(!h)break b;if(!((h|0)==(v|0)|u^1))break b;do if(t)if(s){k[x>>2]=b;break}else{k[x>>2]=e;break}while(0);if(!u){if(b)k[b+(n<<2)>>2]=0;if(!e){e=0;break f}i[e+n>>0]=0}break}case 120:case 88:case 112:{h=16;N=134;break}case 111:{h=8;N=134;break}case 117:case 100:{h=10;N=134;break}case 105:{h=0;N=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{m=+ok(a,t,0);if((k[F>>2]|0)==((k[z>>2]|0)-(k[K>>2]|0)|0))break b;if(x)switch(t|0){case 0:{o[x>>2]=m;break f}case 1:{p[x>>3]=m;break f}case 2:{p[x>>3]=m;break f}default:break f}break}default:{}}while(0);l:do if((N|0)==134){N=0;h=pk(a,h,0,-1,-1)|0;if((k[F>>2]|0)==((k[z>>2]|0)-(k[K>>2]|0)|0))break b;if((x|0)!=0&(q|0)==112){k[x>>2]=h;break}if(x)switch(t|0){case -2:{i[x>>0]=h;break l}case -1:{j[x>>1]=h;break l}case 0:{k[x>>2]=h;break l}case 1:{k[x>>2]=h;break l}case 3:{Q=x;k[Q>>2]=h;k[Q+4>>2]=M;break l}default:break l}}while(0);d=((x|0)!=0&1)+d|0;h=(k[F>>2]|0)+w+(k[K>>2]|0)-(k[z>>2]|0)|0;break c}while(0);g=g+(f&1)|0;qk(a,0);f=k[K>>2]|0;if(f>>>0<(k[L>>2]|0)>>>0){k[K>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0;if((f|0)!=(l[g>>0]|0)){N=21;break b}h=s+1|0}else{while(1){f=g+1|0;if(!(kk(l[f>>0]|0)|0))break;else g=f}qk(a,0);do{f=k[K>>2]|0;if(f>>>0<(k[L>>2]|0)>>>0){k[K>>2]=f+1;f=l[f>>0]|0}else f=rk(a)|0}while((kk(f)|0)!=0);f=k[K>>2]|0;if(k[L>>2]|0){f=f+-1|0;k[K>>2]=f}h=(k[F>>2]|0)+s+f-(k[z>>2]|0)|0}while(0);g=g+1|0;f=i[g>>0]|0;if(!(f<<24>>24))break a;else s=h}if((N|0)==21){if(k[L>>2]|0)k[K>>2]=(k[K>>2]|0)+-1;if((d|0)!=0|(f|0)>-1)break;else{d=0;N=153}}else if((N|0)==152)if(!d){d=f;N=153}if((N|0)==153){f=d;d=-1}if(f){Ql(e);Ql(b)}}else d=0;while(0);if(O)Uk(a);r=P;return d|0}function ol(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+128|0;e=m+112|0;l=m;f=l;g=37352;h=f+112|0;do{k[f>>2]=k[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if((b+-1|0)>>>0>2147483646)if(!b){b=1;j=4}else{b=mk()|0;k[b>>2]=75;b=-1}else{e=a;j=4}if((j|0)==4){j=-2-e|0;j=b>>>0>j>>>0?j:b;k[l+48>>2]=j;a=l+20|0;k[a>>2]=e;k[l+44>>2]=e;b=e+j|0;e=l+16|0;k[e>>2]=b;k[l+28>>2]=b;b=ml(l,c,d)|0;if(j){c=k[a>>2]|0;i[c+(((c|0)==(k[e>>2]|0))<<31>>31)>>0]=0}}r=m;return b|0}function pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=r;r=r+112|0;d=f;e=d;g=e+112|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(g|0));k[d+32>>2]=29;k[d+44>>2]=a;k[d+76>>2]=-1;k[d+84>>2]=a;g=nl(d,b,c)|0;r=f;return g|0}function ql(a,b,c){a=a|0;b=b|0;c=c|0;return +(+Jl(a,b,2))}function rl(a,b,c){a=a|0;b=b|0;c=c|0;a=Kl(a,b,c,-1,-1)|0;return a|0}function sl(a,b,c){a=a|0;b=b|0;c=c|0;a=Kl(a,b,c,0,-2147483648)|0;return a|0}function tl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=ia(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return ((c|0)!=0?a:0)|0}function ul(a,b){a=a|0;b=b|0;var c=0,d=0;c=b;a:do if(!((c^a)&3)){if(c&3)do{c=i[b>>0]|0;i[a>>0]=c;if(!(c<<24>>24))break a;b=b+1|0;a=a+1|0}while((b&3|0)!=0);c=k[b>>2]|0;if(!((c&-2139062144^-2139062144)&c+-16843009)){d=a;while(1){b=b+4|0;a=d+4|0;k[d>>2]=c;c=k[b>>2]|0;if((c&-2139062144^-2139062144)&c+-16843009)break;else d=a}}d=8}else d=8;while(0);if((d|0)==8){d=i[b>>0]|0;i[a>>0]=d;if(d<<24>>24)do{b=b+1|0;a=a+1|0;d=i[b>>0]|0;i[a>>0]=d}while(d<<24>>24!=0)}return a|0}function vl(a,b){a=a|0;b=b|0;var c=0,d=0;d=i[a>>0]|0;c=i[b>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=c<<24>>24)b=d;else{do{a=a+1|0;b=b+1|0;d=i[a>>0]|0;c=i[b>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=c<<24>>24));b=d}return (b&255)-(c&255)|0}function wl(a,b){a=a|0;b=b|0;ul(a,b)|0;return a|0}function xl(a){a=a|0;var b=0,c=0,d=0;d=a;a:do if(!(d&3))c=4;else{b=a;a=d;while(1){if(!(i[b>>0]|0))break a;b=b+1|0;a=b;if(!(a&3)){a=b;c=4;break}}}while(0);if((c|0)==4){while(1){b=k[a>>2]|0;if(!((b&-2139062144^-2139062144)&b+-16843009))a=a+4|0;else break}if((b&255)<<24>>24)do a=a+1|0;while((i[a>>0]|0)!=0)}return a-d|0}function yl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if(!c)b=0;else{d=i[a>>0]|0;a:do if(!(d<<24>>24))d=0;else while(1){c=c+-1|0;e=i[b>>0]|0;if(!(d<<24>>24==e<<24>>24&((c|0)!=0&e<<24>>24!=0)))break a;a=a+1|0;b=b+1|0;d=i[a>>0]|0;if(!(d<<24>>24)){d=0;break}}while(0);b=(d&255)-(l[b>>0]|0)|0}return b|0}function zl(a){a=a|0;var b=0;b=a;while(1)if(!(k[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function Al(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c){d=a;while(1){c=c+-1|0;k[d>>2]=k[b>>2];if(!c)break;else{b=b+4|0;d=d+4|0}}}return a|0}function Bl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=(c|0)==0;if(a-b>>2>>>0>>0){if(!d)do{c=c+-1|0;k[a+(c<<2)>>2]=k[b+(c<<2)>>2]}while((c|0)!=0)}else if(!d){d=b;b=a;while(1){c=c+-1|0;k[b>>2]=k[d>>2];if(!c)break;else{d=d+4|0;b=b+4|0}}}return a|0}function Cl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(c){d=a;while(1){c=c+-1|0;k[d>>2]=b;if(!c)break;else d=d+4|0}}return a|0}function Dl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;g=a+4|0;c=k[g>>2]|0;h=a+100|0;if(c>>>0<(k[h>>2]|0)>>>0){k[g>>2]=c+1;c=l[c>>0]|0}else c=rk(a)|0;switch(c|0){case 43:case 45:{d=(c|0)==45&1;c=k[g>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[g>>2]=c+1;c=l[c>>0]|0}else c=rk(a)|0;if((b|0)!=0&(c+-48|0)>>>0>9?(k[h>>2]|0)!=0:0){k[g>>2]=(k[g>>2]|0)+-1;f=d}else f=d;break}default:f=0}if((c+-48|0)>>>0>9)if(!(k[h>>2]|0)){d=-2147483648;c=0}else{k[g>>2]=(k[g>>2]|0)+-1;d=-2147483648;c=0}else{d=0;do{d=c+-48+(d*10|0)|0;c=k[g>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[g>>2]=c+1;c=l[c>>0]|0}else c=rk(a)|0}while((c+-48|0)>>>0<10&(d|0)<214748364);b=((d|0)<0)<<31>>31;if((c+-48|0)>>>0<10){do{b=Dw(d|0,b|0,10,0)|0;d=M;c=tw(c|0,((c|0)<0)<<31>>31|0,-48,-1)|0;d=tw(c|0,M|0,b|0,d|0)|0;b=M;c=k[g>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[g>>2]=c+1;c=l[c>>0]|0}else c=rk(a)|0}while((c+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&d>>>0<2061584302));e=d}else e=d;if((c+-48|0)>>>0<10)do{c=k[g>>2]|0;if(c>>>0<(k[h>>2]|0)>>>0){k[g>>2]=c+1;c=l[c>>0]|0}else c=rk(a)|0}while((c+-48|0)>>>0<10);if(k[h>>2]|0)k[g>>2]=(k[g>>2]|0)+-1;a=(f|0)!=0;c=rw(0,0,e|0,b|0)|0;d=a?M:b;c=a?c:e}M=d;return c|0}function El(a){a=a|0;if(!(k[a+68>>2]|0))Uk(a);return}function Fl(a){a=a|0;if(!(k[a+68>>2]|0))Uk(a);return}function Gl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+20|0;f=a+28|0;if((k[b>>2]|0)>>>0>(k[f>>2]|0)>>>0?(Qb[k[a+36>>2]&63](a,0,0)|0,(k[b>>2]|0)==0):0)b=-1;else{g=a+4|0;c=k[g>>2]|0;d=a+8|0;e=k[d>>2]|0;if(c>>>0>>0)Qb[k[a+40>>2]&63](a,c-e|0,1)|0;k[a+16>>2]=0;k[f>>2]=0;k[b>>2]=0;k[d>>2]=0;k[g>>2]=0;b=0}return b|0}\n\n// EMSCRIPTEN_END_FUNCS\nvar Ib=[cx,_q,cr,Yr,as,fs,hs,Hu,Su,cx,cx,cx,cx,cx,cx,cx];var Jb=[dx,si,gi,Wh,Kh,yh,mh,ah,Lg,Wj,Vj,Sj,dx,dx,dx,dx];var Kb=[ex,ls,rs,ex];var Lb=[fx,oi,pi,ci,di,Sh,Th,Gh,Hh,uh,vh,ih,jh,Yg,Zg,Hg,Ig,ug,vg,ig,jg,Yf,Zf,Mf,Nf,Af,Bf,Ie,Je,ve,we,Dc,Ec,Zd,be,_d,mo,oo,no,po,ud,vd,_i,wd,nd,od,Sc,Tc,_c,$c,fd,gd,xd,yd,Ed,Fd,Ld,Md,Sd,Td,te,ue,Re,Se,Ye,Ze,df,ef,lf,mf,Wg,Xg,Nm,Ai,Ki,Li,$i,aj,pj,qj,wj,xj,Bj,Cj,Ej,Hj,Fj,Gj,Ij,Jj,Mn,bm,hm,xn,mm,sm,Lm,Mm,yn,Nn,$n,bo,ao,co,go,io,ho,jo,uo,wo,vo,xo,Eo,Fo,pn,Go,Ho,Io,Ko,Us,Oo,Po,To,Uo,gp,hp,Ap,Bp,Pp,Qp,aq,bq,zq,Aq,Xq,Zq,ar,br,er,fr,pr,qr,Ar,Br,Lr,Mr,Wr,Xr,ds,es,js,ks,ps,qs,vs,ws,As,Bs,Is,Js,kt,lt,Gu,Dt,du,eu,fu,gu,Jo,Ts,Ws,ut,Lt,Tt,$t,au,bj,Si,jj,Cc,zn,fo,ie,Og,ek,El,Fl,Wl,wk,Zr,$r,Vs,Qv,Xv,Yv,Zv,_v,$v,aw,Sm,en,Ql,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx,fx];var Mb=[gx,ri,fi,Vh,Jh,xh,lh,$g,Kg,wg,kg,_f,Of,Cf,Ke,xe,Fc,An,Mi,Pi,cm,gm,nm,rm,Pn,ir,jr,kr,lr,nr,or,tr,ur,vr,wr,yr,zr,Er,Fr,Gr,Hr,Jr,Kr,Pr,Qr,Rr,Sr,Ur,Vr,zs,Es,lu,nu,pu,mu,ou,qu,uc,cj,Qi,Ri,Ti,un,Mc,Oc,qo,on,_m,he,Be,tf,Gf,Sf,cg,og,Ag,Ng,ch,oh,Ah,Mh,Yh,ii,ui,Ii,hj,Cm,Am,sn,yo,Bm,Ym,jn,hn,kv,lv,mv,nv,ov,pv,Ct,qv,rv,sv,tv,uv,vv,wv,xv,yv,zv,Av,Bv,Cv,Dv,Ev,Fv,Gv,Hv,Iv,Jv,Kv,Lv,Mv,Ov,gw,gx,gx];var Nb=[hx,Vo,Wo,Xo,Yo,Zo,_o,$o,ap,bp,cp,dp,ip,jp,kp,lp,mp,np,op,pp,qp,rp,sp,Hp,Jp,Up,Wp,dq,eq,fq,hq,jq,Cq,Dq,Eq,Gq,Iq,os,us,md,cv,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx,hx];var Ob=[ix,En,Fn,rd,In,Bi,rj,yj,Dj,Wk,dm,Un,Wn,Xn,Tn,im,jm,om,Hn,tm,um,Ao,cq,su,uu,wu,Cu,Eu,yu,Au,Bq,tu,vu,xu,Du,Fu,zu,Bu,gr,hr,mr,rr,sr,xr,Cr,Dr,Ir,Nr,Or,Tr,Ht,It,Kt,hu,ju,iu,ku,yt,zt,Bt,Pt,Qt,St,Xt,Yt,_t,Ei,lj,tn,Vi,eo,ko,jx,kx,lx,Ak,zl,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix,ix];var Pb=[mx,_r,gs,mx];var Qb=[nx,Bn,Gn,Kn,Em,Fm,Kj,Ll,Zk,Yk,Xk,_k,Qn,Vn,em,Zn,pm,No,So,xs,Cs,nt,pt,st,Xs,ct,ft,it,Nc,Il,$m,zk,hv,jv,Pk,Ok,Jk,ll,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx,nx];var Rb=[ox,ns,ts,ox];var Sb=[px,pd,Zj,Yj,Xj,Rn,Cn,ys,Ds,px,px,px,px,px,px,px];var Tb=[qx,Gp,Mp,Tp,Yp,qx,qx,qx];var Ub=[rx,bs,is,ms,ss,rx,rx,rx];var Vb=[sx,qi,ei,Uh,Ih,wh,kh,_g,Jg,yg,mg,ag,Qf,Ef,Me,ze,Hc,sd,td,Yn,fm,km,_n,Jn,qm,vm,Ln,mt,ot,qt,at,dt,gt,dj,yc,Ac,so,Ss,to,yk,xk,Um,fn,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx,sx];var Wb=[tx,Lo,Qo,Cp,Dp,Ip,Op,Rp,Sp,Vp,_p,tt,Gt,Jt,jt,xt,At,Ot,Rt,Wt,Zt,Qk,Mk,tx,tx,tx,tx,tx,tx,tx,tx,tx];var Xb=[ux,jw,iw,hw];var Yb=[vx,vc,kj,fp,Ls,Ms,Ns,hk,jk,ik,vx,vx,vx,vx,vx,vx];var Zb=[wx,xg,lg,$f,Pf,Df,Le,ye,Gc,rt,Zs,_s,$s,ht,Di,Ji,Ru,bv,Nk,uk,Kk,pw,ow,nw,mw,lw,kw,wx,wx,wx,wx,wx];var _b=[xx,Dm,Ci,Bo,ej,Qm,yx,Km,Wm,Ui,Hm,Do,fv,gv,iv,cn];var $b=[zx,Ax,bk,Bx,ck,Cx,ak,zx];var ac=[Dx,lq,Kq,Et,Ft,vt,wt,Mt,Nt,Ut,Vt,Dx,Dx,Dx,Dx,Dx];var bc=[Ex,Kp,Np,Xp,Zp,Ex,Ex,Ex];var cc=[Fx,ce,de,$d,ae,qd,Uc,Vc,ad,bd,hd,id,zd,Ad,Gd,Hd,Nd,Od,Ud,Vd,Te,Ue,_e,$e,ff,gf,nf,of,Mj,Nj,Pj,Sn,Dn,Mo,Ro,nc,Jm,Ic,Jc,Kc,Lc,Pc,Qc,Rc,Ne,Oe,Pe,Qe,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx,Fx];return{_jpegls_encode:gj,___cxa_can_catch:_j,_free:Ql,_jpegls_decode:fj,___cxa_is_pointer_type:$j,_i64Add:tw,_memmove:xw,_i64Subtract:rw,_memset:sw,_malloc:Pl,_memcpy:vw,_bitshift64Lshr:uw,_bitshift64Shl:ww,__GLOBAL__I_000101:Xl,__GLOBAL__sub_I_jpegls_cpp:Bc,__GLOBAL__sub_I_iostream_cpp:Yl,runPostSets:qw,_emscripten_replace_memory:Hb,stackAlloc:dc,stackSave:ec,stackRestore:fc,establishStackSpace:gc,setThrew:hc,setTempRet0:kc,getTempRet0:lc,dynCall_iiiiiiii:Hw,dynCall_viiiii:Iw,dynCall_iiiiiid:Jw,dynCall_vi:Kw,dynCall_vii:Lw,dynCall_iiiiiii:Mw,dynCall_ii:Nw,dynCall_iiiiiiiiiiii:Ow,dynCall_iiii:Pw,dynCall_viiiiiiiiiiiiiii:Qw,dynCall_viiiiii:Rw,dynCall_viiiiiii:Sw,dynCall_viiiiiiiiii:Tw,dynCall_iii:Uw,dynCall_iiiiii:Vw,dynCall_diii:Ww,dynCall_i:Xw,dynCall_iiiii:Yw,dynCall_viii:Zw,dynCall_v:_w,dynCall_iiiiiiiii:$w,dynCall_iiiiid:ax,dynCall_viiii:bx}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _jpegls_encode=Module[\"_jpegls_encode\"]=asm[\"_jpegls_encode\"];var ___cxa_can_catch=Module[\"___cxa_can_catch\"]=asm[\"___cxa_can_catch\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _jpegls_decode=Module[\"_jpegls_decode\"]=asm[\"_jpegls_decode\"];var ___cxa_is_pointer_type=Module[\"___cxa_is_pointer_type\"]=asm[\"___cxa_is_pointer_type\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _memmove=Module[\"_memmove\"]=asm[\"_memmove\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _emscripten_replace_memory=Module[\"_emscripten_replace_memory\"]=asm[\"_emscripten_replace_memory\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var __GLOBAL__sub_I_iostream_cpp=Module[\"__GLOBAL__sub_I_iostream_cpp\"]=asm[\"__GLOBAL__sub_I_iostream_cpp\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var __GLOBAL__sub_I_jpegls_cpp=Module[\"__GLOBAL__sub_I_jpegls_cpp\"]=asm[\"__GLOBAL__sub_I_jpegls_cpp\"];var __GLOBAL__I_000101=Module[\"__GLOBAL__I_000101\"]=asm[\"__GLOBAL__I_000101\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var dynCall_iiiiiiii=Module[\"dynCall_iiiiiiii\"]=asm[\"dynCall_iiiiiiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_iiiiiid=Module[\"dynCall_iiiiiid\"]=asm[\"dynCall_iiiiiid\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_iiiiiiiiiiii=Module[\"dynCall_iiiiiiiiiiii\"]=asm[\"dynCall_iiiiiiiiiiii\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_viiiiiiiiiiiiiii=Module[\"dynCall_viiiiiiiiiiiiiii\"]=asm[\"dynCall_viiiiiiiiiiiiiii\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_viiiiiii=Module[\"dynCall_viiiiiii\"]=asm[\"dynCall_viiiiiii\"];var dynCall_viiiiiiiiii=Module[\"dynCall_viiiiiiiiii\"]=asm[\"dynCall_viiiiiiiiii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_diii=Module[\"dynCall_diii\"]=asm[\"dynCall_diii\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_iiiiiiiii=Module[\"dynCall_iiiiiiiii\"]=asm[\"dynCall_iiiiiiiii\"];var dynCall_iiiiid=Module[\"dynCall_iiiiid\"]=asm[\"dynCall_iiiiid\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Runtime.stackAlloc=asm[\"stackAlloc\"];Runtime.stackSave=asm[\"stackSave\"];Runtime.stackRestore=asm[\"stackRestore\"];Runtime.establishStackSpace=asm[\"establishStackSpace\"];Runtime.setTempRet0=asm[\"setTempRet0\"];Runtime.getTempRet0=asm[\"getTempRet0\"];function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};Module[\"callMain\"]=Module.callMain=function callMain(args){assert(runDependencies==0,\"cannot call main when async dependencies remain! (listen on __ATMAIN__)\");assert(__ATPRERUN__.length==0,\"cannot call main when preRun functions remain to be called\");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module[\"thisProgram\"]),\"i8\",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(Module[\"_main\"]&&shouldRunNow)Module[\"callMain\"](args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=Module.run=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"stdout\"][\"once\"](\"drain\",(function(){process[\"exit\"](status)}));console.log(\" \");setTimeout((function(){process[\"exit\"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit===\"function\"){quit(status)}throw new ExitStatus(status)}Module[\"exit\"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;var extra=\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output=\"abort(\"+what+\") at \"+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module[\"abort\"]=Module.abort=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"]){shouldRunNow=false}run()\n\n\n\n\n\n return Module;\n};\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = CharLS;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/lib/charLS-DynamicMemory-browser.js\n// module id = 34\n// module chunks = 0","/*\n Copyright 2011 notmasteryet\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nvar ColorSpace = {Unkown: 0, Grayscale: 1, AdobeRGB: 2, RGB: 3, CYMK: 4};\nvar JpegImage = (function jpegImage() {\n \"use strict\";\n var dctZigZag = new Int32Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n ]);\n\n var dctCos1 = 4017; // cos(pi/16)\n var dctSin1 = 799; // sin(pi/16)\n var dctCos3 = 3406; // cos(3*pi/16)\n var dctSin3 = 2276; // sin(3*pi/16)\n var dctCos6 = 1567; // cos(6*pi/16)\n var dctSin6 = 3784; // sin(6*pi/16)\n var dctSqrt2 = 5793; // sqrt(2)\n var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n function constructor() {\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0, code = [], i, j, length = 16;\n while (length > 0 && !codeLengths[length - 1])\n length--;\n code.push({children: [], index: 0});\n var p = code[0], q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successivePrev, successive) {\n var precision = frame.precision;\n var samplesPerLine = frame.samplesPerLine;\n var scanLines = frame.scanLines;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var maxH = frame.maxH, maxV = frame.maxV;\n\n var startOffset = offset, bitsData = 0, bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData == 0xFF) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw \"unexpected marker: \" + ((bitsData << 8) | nextByte).toString(16);\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n var bit;\n while ((bit = readBit()) !== null) {\n node = node[bit];\n if (typeof node === 'number')\n return node;\n if (typeof node !== 'object')\n throw \"invalid huffman sequence\";\n }\n return null;\n }\n\n function receive(length) {\n var n = 0;\n while (length > 0) {\n var bit = readBit();\n if (bit === null)\n return;\n n = (n << 1) | bit;\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n var n = receive(length);\n if (n >= 1 << (length - 1))\n return n;\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[offset] = (component.pred += diff);\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15)\n break;\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n component.blockData[offset] = (component.pred += diff);\n }\n\n function decodeDCSuccessive(component, offset) {\n component.blockData[offset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n function decodeACFirst(component, offset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart, e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0, successiveACNextValue;\n function decodeACSuccessive(component, offset) {\n var k = spectralStart, e = spectralEnd, r = 0;\n while (k <= e) {\n var z = dctZigZag[k];\n switch (successiveACState) {\n case 0: // initial state\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1)\n throw \"invalid ACn encoding\";\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n r--;\n if (r === 0)\n successiveACState = successiveACState == 2 ? 3 : 0;\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n component.blockData[offset + z] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0)\n successiveACState = 0;\n }\n }\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0)\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n else\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0, marker;\n var mcuExpected;\n if (componentsLength == 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n if (!resetInterval) {\n resetInterval = mcuExpected;\n }\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength == 1) {\n component = components[0];\n for (n = 0; n < resetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < resetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker <= 0xFF00) {\n throw \"marker was not found\";\n }\n\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable;\n var v0, v1, v2, v3, v4, v5, v6, v7, t;\n var i;\n\n // dequant\n for (i = 0; i < 64; i++) {\n p[i] = component.blockData[blockBufferOffset + i] * qt[i];\n }\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n var row = 8 * i;\n\n // check for all-zero AC coefficients\n if (p[1 + row] === 0 && p[2 + row] === 0 && p[3 + row] === 0 &&\n p[4 + row] === 0 && p[5 + row] === 0 && p[6 + row] === 0 &&\n p[7 + row] === 0) {\n t = (dctSqrt2 * p[0 + row] + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;\n v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n var col = i;\n\n // check for all-zero AC coefficients\n if (p[1 * 8 + col] === 0 && p[2 * 8 + col] === 0 && p[3 * 8 + col] === 0 &&\n p[4 * 8 + col] === 0 && p[5 * 8 + col] === 0 && p[6 * 8 + col] === 0 &&\n p[7 * 8 + col] === 0) {\n t = (dctSqrt2 * p[i + 0] + 8192) >> 14;\n p[0 * 8 + col] = t;\n p[1 * 8 + col] = t;\n p[2 * 8 + col] = t;\n p[3 * 8 + col] = t;\n p[4 * 8 + col] = t;\n p[5 * 8 + col] = t;\n p[6 * 8 + col] = t;\n p[7 * 8 + col] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 * 8 + col] + 2048) >> 12;\n v1 = (dctSqrt2 * p[4 * 8 + col] + 2048) >> 12;\n v2 = p[2 * 8 + col];\n v3 = p[6 * 8 + col];\n v4 = (dctSqrt1d2 * (p[1 * 8 + col] - p[7 * 8 + col]) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p[1 * 8 + col] + p[7 * 8 + col]) + 2048) >> 12;\n v5 = p[3 * 8 + col];\n v6 = p[5 * 8 + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 * 8 + col] = v0 + v7;\n p[7 * 8 + col] = v0 - v7;\n p[1 * 8 + col] = v1 + v6;\n p[6 * 8 + col] = v1 - v6;\n p[2 * 8 + col] = v2 + v5;\n p[5 * 8 + col] = v2 - v5;\n p[3 * 8 + col] = v3 + v4;\n p[4 * 8 + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n var index = blockBufferOffset + i;\n var q = p[i];\n q = (q <= -2056 / component.bitConversion) ? 0 :\n (q >= 2024 / component.bitConversion) ? 255 / component.bitConversion :\n (q + 2056 / component.bitConversion) >> 4;\n component.blockData[index] = q;\n }\n }\n\n function buildComponentData(frame, component) {\n var lines = [];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n var computationBuffer = new Int32Array(64);\n\n var i, j, ll = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n }\n\n function clampToUint8(a) {\n return a <= 0 ? 0 : a >= 255 ? 255 : a | 0;\n }\n\n constructor.prototype = {\n load: function load(path) {\n var handleData = (function (data) {\n this.parse(data);\n if (this.onload)\n this.onload();\n }).bind(this);\n\n if (path.indexOf(\"data:\") > -1) {\n var offset = path.indexOf(\"base64,\") + 7;\n var data = atob(path.substring(offset));\n var arr = new Uint8Array(data.length);\n for (var i = data.length - 1; i >= 0; i--) {\n arr[i] = data.charCodeAt(i);\n }\n handleData(data);\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", path, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = (function () {\n // TODO catch parse error\n var data = new Uint8Array(xhr.response);\n handleData(data);\n }).bind(this);\n xhr.send(null);\n }\n },\n parse: function parse(data) {\n\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n\n function readDataBlock() {\n var length = readUint16();\n var array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0, length = data.length;\n var jfif = null;\n var adobe = null;\n var pixels = null;\n var frame, resetInterval;\n var quantizationTables = [];\n var huffmanTablesAC = [], huffmanTablesDC = [];\n var fileMarker = readUint16();\n if (fileMarker != 0xFFD8) { // SOI (Start of Image)\n throw \"SOI not found\";\n }\n\n fileMarker = readUint16();\n while (fileMarker != 0xFFD9) { // EOI (End of image)\n var i, j, l;\n switch (fileMarker) {\n case 0xFFE0: // APP0 (Application Specific)\n case 0xFFE1: // APP1\n case 0xFFE2: // APP2\n case 0xFFE3: // APP3\n case 0xFFE4: // APP4\n case 0xFFE5: // APP5\n case 0xFFE6: // APP6\n case 0xFFE7: // APP7\n case 0xFFE8: // APP8\n case 0xFFE9: // APP9\n case 0xFFEA: // APP10\n case 0xFFEB: // APP11\n case 0xFFEC: // APP12\n case 0xFFED: // APP13\n case 0xFFEE: // APP14\n case 0xFFEF: // APP15\n case 0xFFFE: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xFFE0) {\n if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 &&\n appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\\x00'\n jfif = {\n version: {major: appData[5], minor: appData[6]},\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xFFEE) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F &&\n appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\\x00'\n adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11]\n };\n }\n }\n break;\n\n case 0xFFDB: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Int32Array(64);\n if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if ((quantizationTableSpec >> 4) === 1) { //16 bit\n for (j = 0; j < 64; j++) {\n var zz = dctZigZag[j];\n tableData[zz] = readUint16();\n }\n } else\n throw \"DQT: invalid table spec\";\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw \"Only single frame JPEGs supported\";\n }\n readUint16(); // skip data length\n frame = {};\n frame.extended = (fileMarker === 0xFFC1);\n frame.progressive = (fileMarker === 0xFFC2);\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++], componentId;\n var maxH = 0, maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n if (maxH < h)\n maxH = h;\n if (maxV < v)\n maxV = v;\n var qId = data[offset + 2];\n l = frame.components.push({\n h: h,\n v: v,\n quantizationTable: quantizationTables[qId],\n quantizationTableId: qId,\n bitConversion: 255 / ((1 << frame.precision) - 1)\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xFFC4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength; ) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++)\n codeLengthSum += (codeLengths[j] = data[offset]);\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++)\n huffmanValues[j] = data[offset];\n i += 17 + codeLengthSum;\n\n ((huffmanTableSpec >> 4) === 0 ?\n huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =\n buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xFFDD: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xFFDA: // SOS (Start of Scan)\n var scanLength = readUint16();\n var selectorsCount = data[offset++];\n var components = [], component;\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successiveApproximation >> 4, successiveApproximation & 15);\n offset += processed;\n break;\n default:\n if (data[offset - 3] == 0xFF &&\n data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw \"unknown JPEG marker \" + fileMarker.toString(16);\n }\n fileMarker = readUint16();\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n switch (frame.components.length)\n {\n case 1:\n this.colorspace = ColorSpace.Grayscale;\n break;\n case 3:\n if (this.adobe)\n this.colorspace = ColorSpace.AdobeRGB;\n else\n this.colorspace = ColorSpace.RGB;\n break;\n case 4:\n this.colorspace = ColorSpace.CYMK;\n break;\n default:\n this.colorspace = ColorSpace.Unknown;\n }\n for (var i = 0; i < frame.components.length; i++) {\n var component = frame.components[i];\n if (!component.quantizationTable && component.quantizationTableId !== null)\n component.quantizationTable = quantizationTables[component.quantizationTableId];\n this.components.push({\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n bitConversion: component.bitConversion\n });\n }\n },\n getData16: function getData16(width, height) {\n if (this.components.length !== 1)\n throw 'Unsupported color mode';\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint16Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint16Array((this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn * 8);\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j, k, ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(component, blockRow, blockCol);\n var offset = 0, sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++];\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n return data;\n },\n getData: function getData(width, height) {\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var Y, Cb, Cr, K, C, M, Ye, R, G, B;\n var colorTransform;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint8Array((this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn * 8);\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j, k, ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(component, blockRow, blockCol);\n var offset = 0, sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++] * component.bitConversion;\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n\n // ... then transform colors, if necessary\n switch (numComponents) {\n case 1:\n case 2:\n break;\n // no color conversion for one or two compoenents\n\n case 3:\n // The default transform for three components is true\n colorTransform = true;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i ];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n R = clampToUint8(Y - 179.456 + 1.402 * Cr);\n G = clampToUint8(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);\n B = clampToUint8(Y - 226.816 + 1.772 * Cb);\n\n data[i ] = R;\n data[i + 1] = G;\n data[i + 2] = B;\n }\n }\n break;\n case 4:\n if (!this.adobe)\n throw 'Unsupported color mode (4 components)';\n // The default transform for four components is false\n colorTransform = false;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n C = clampToUint8(434.456 - Y - 1.402 * Cr);\n M = clampToUint8(119.541 - Y + 0.344 * Cb + 0.714 * Cr);\n Y = clampToUint8(481.816 - Y - 1.772 * Cb);\n\n data[i ] = C;\n data[i + 1] = M;\n data[i + 2] = Y;\n // K is unchanged\n }\n }\n break;\n default:\n throw 'Unsupported color mode';\n }\n return data;\n }\n };\n\n return constructor;\n})();\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = {\n JpegImage: JpegImage\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/lib/jpeg-baseline.js\n// module id = 35\n// module chunks = 0","// Adapted from: https://github.com/chafey/cornerstoneWADOImageLoader/blob/73ed7c4bbbd275bb0f7f9f363ef82575c17bb5f1/src/webWorker/decodeTask/decoders/decodeJPEGLS.js\n/*!\n The MIT License (MIT)\n\n Copyright (c) 2014 Chris Hafey (chafey@gmail.com)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\n\"use strict\";\n\nvar CharLS = CharLS || ((typeof require !== 'undefined') ? require('../lib/charLS-DynamicMemory-browser.js') : null);\n\nvar JpegLS = (function () {\n var charLS;\n\n function constructor() {\n }\n\n constructor.prototype = {\n decodeJPEGLS: function(pixelData, signed) {\n return decodeJPEGLS(pixelData, signed);\n }\n };\n\n function jpegLSDecode(data, isSigned) {\n // prepare input parameters\n var dataPtr = charLS._malloc(data.length);\n charLS.writeArrayToMemory(data, dataPtr);\n\n // prepare output parameters\n var imagePtrPtr=charLS._malloc(4);\n var imageSizePtr=charLS._malloc(4);\n var widthPtr=charLS._malloc(4);\n var heightPtr=charLS._malloc(4);\n var bitsPerSamplePtr=charLS._malloc(4);\n var stridePtr=charLS._malloc(4);\n var allowedLossyErrorPtr =charLS._malloc(4);\n var componentsPtr=charLS._malloc(4);\n var interleaveModePtr=charLS._malloc(4);\n\n // Decode the image\n var result = charLS.ccall(\n 'jpegls_decode',\n 'number',\n ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number'],\n [dataPtr, data.length, imagePtrPtr, imageSizePtr, widthPtr, heightPtr, bitsPerSamplePtr, stridePtr, componentsPtr, allowedLossyErrorPtr, interleaveModePtr]\n );\n\n // Extract result values into object\n var image = {\n result : result,\n width : charLS.getValue(widthPtr,'i32'),\n height : charLS.getValue(heightPtr,'i32'),\n bitsPerSample : charLS.getValue(bitsPerSamplePtr,'i32'),\n stride : charLS.getValue(stridePtr,'i32'),\n components : charLS.getValue(componentsPtr, 'i32'),\n allowedLossyError : charLS.getValue(allowedLossyErrorPtr, 'i32'),\n interleaveMode: charLS.getValue(interleaveModePtr, 'i32'),\n pixelData: undefined\n };\n\n // Copy image from emscripten heap into appropriate array buffer type\n var imagePtr = charLS.getValue(imagePtrPtr, '*');\n if(image.bitsPerSample <= 8) {\n image.pixelData = new Uint8Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint8Array(charLS.HEAP8.buffer, imagePtr, image.pixelData.length));\n } else {\n // I have seen 16 bit signed images, but I don't know if 16 bit unsigned is valid, hoping to get\n // answer here:\n // https://github.com/team-charls/charls/issues/14\n if(isSigned) {\n image.pixelData = new Int16Array(image.width * image.height * image.components);\n image.pixelData.set(new Int16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n } else {\n image.pixelData = new Uint16Array(image.width * image.height * image.components);\n image.pixelData.set(new Uint16Array(charLS.HEAP16.buffer, imagePtr, image.pixelData.length));\n }\n }\n\n // free memory and return image object\n charLS._free(dataPtr);\n charLS._free(imagePtr);\n charLS._free(imagePtrPtr);\n charLS._free(imageSizePtr);\n charLS._free(widthPtr);\n charLS._free(heightPtr);\n charLS._free(bitsPerSamplePtr);\n charLS._free(stridePtr);\n charLS._free(componentsPtr);\n charLS._free(interleaveModePtr);\n\n return image;\n }\n\n function initializeJPEGLS() {\n // check to make sure codec is loaded\n if(typeof CharLS === 'undefined') {\n throw 'No JPEG-LS decoder loaded';\n }\n\n // Try to initialize CharLS\n // CharLS https://github.com/chafey/charls\n if(!charLS) {\n charLS = CharLS();\n if(!charLS || !charLS._jpegls_decode) {\n throw 'JPEG-LS failed to initialize';\n }\n }\n }\n\n function decodeJPEGLS(pixelData, signed) {\n initializeJPEGLS();\n\n var image = jpegLSDecode(pixelData, signed);\n // console.log(image);\n\n // throw error if not success or too much data\n if(image.result !== 0 && image.result !== 6) {\n throw 'JPEG-LS decoder failed to decode frame (error code ' + image.result + ')';\n }\n\n var imageFrame = {};\n imageFrame.columns = image.width;\n imageFrame.rows = image.height;\n imageFrame.pixelData = image.pixelData;\n\n return imageFrame;\n }\n\n return constructor;\n}());\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = JpegLS;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/lib/jpeg-ls.js\n// module id = 36\n// module chunks = 0","/*! image-JPEG2000 - v0.3.1 - 2015-08-26 | https://github.com/OHIF/image-JPEG2000 */\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals ArithmeticDecoder, globalScope, log2, readUint16, readUint32,\n info, warn */\n\n'use strict';\n\nvar JpxImage = (function JpxImageClosure() {\n // Table E.1\n var SubbandsGainLog2 = {\n 'LL': 0,\n 'LH': 1,\n 'HL': 1,\n 'HH': 2\n };\n function JpxImage() {\n this.failOnCorruptedImage = false;\n }\n JpxImage.prototype = {\n parse: function JpxImage_parse(data) {\n\n var head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xFF4F) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n var position = 0, length = data.length;\n while (position < length) {\n var headerSize = 8;\n var lbox = readUint32(data, position);\n var tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox = readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new Error('JPX Error: Invalid box field size');\n }\n var dataLength = lbox - headerSize;\n var jumpDataLength = true;\n switch (tbox) {\n case 0x6A703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636F6C72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n var method = data[position];\n var precedence = data[position + 1];\n var approximation = data[position + 2];\n if (method === 1) {\n // enumerated colorspace\n var colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn('Unknown colorspace ' + colorspace);\n break;\n }\n } else if (method === 2) {\n info('ICC profile not supported');\n }\n break;\n case 0x6A703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6A502020: // 'jP\\024\\024'\n if (0x0d0a870a !== readUint32(data, position)) {\n warn('Invalid JP2 signature');\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6A501A1A: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n var headerType = String.fromCharCode((tbox >> 24) & 0xFF,\n (tbox >> 16) & 0xFF,\n (tbox >> 8) & 0xFF,\n tbox & 0xFF);\n warn('Unsupported header type ' + tbox + ' (' + headerType + ')');\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n },\n parseImageProperties: function JpxImage_parseImageProperties(stream) {\n var newByte = stream.getByte();\n while (newByte >= 0) {\n var oldByte = newByte;\n newByte = stream.getByte();\n var code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xFF51) {\n stream.skip(4);\n var Xsiz = stream.getInt32() >>> 0; // Byte 4\n var Ysiz = stream.getInt32() >>> 0; // Byte 8\n var XOsiz = stream.getInt32() >>> 0; // Byte 12\n var YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n var Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as Uint8Arrays\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new Error('JPX Error: No size marker found in JPX stream');\n },\n parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n var context = {};\n try {\n var doNotRecover = false;\n var position = start;\n while (position + 1 < end) {\n var code = readUint16(data, position);\n position += 2;\n\n var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile;\n switch (code) {\n case 0xFF4F: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xFFD9: // End of codestream (EOC)\n break;\n case 0xFF51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n var siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n var componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n var components = [];\n j = position + 38;\n for (var i = 0; i < componentsCount; i++) {\n var component = {\n precision: (data[j] & 0x7F) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 1]\n };\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xFF5C: // Quantization default (QCD)\n length = readUint16(data, position);\n var qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('JPX Error: Invalid SQcd value ' + sqcd);\n }\n qcd.noQuantization = (spqcdSize === 8);\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n var spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xFF5D: // Quantization component (QCC)\n length = readUint16(data, position);\n var qcc = {};\n j = position + 2;\n var cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('JPX Error: Invalid SQcd value ' + sqcd);\n }\n qcc.noQuantization = (spqcdSize === 8);\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < (length + position)) {\n spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xFF52: // Coding style default (COD)\n length = readUint16(data, position);\n var cod = {};\n j = position + 2;\n var scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xF) + 2;\n cod.ycb = (data[j++] & 0xF) + 2;\n var blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticalyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n var precinctsSizes = [];\n while (j < length + position) {\n var precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xF,\n PPy: precinctsSize >> 4\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n var unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push('selectiveArithmeticCodingBypass');\n }\n if (cod.resetContextProbabilities) {\n unsupported.push('resetContextProbabilities');\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push('terminationOnEachCodingPass');\n }\n if (cod.verticalyStripe) {\n unsupported.push('verticalyStripe');\n }\n if (cod.predictableTermination) {\n unsupported.push('predictableTermination');\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n throw new Error('JPX Error: Unsupported COD options (' +\n unsupported.join(', ') + ')');\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xFF90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xFF93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xFF55: // Tile-part lengths, main header (TLM)\n case 0xFF57: // Packet length, main header (PLM)\n case 0xFF58: // Packet length, tile-part header (PLT)\n case 0xFF64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n case 0xFF53: // Coding style component (COC)\n throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' +\n 'not implemented');\n default:\n throw new Error('JPX Error: Unknown codestream code: ' +\n code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw e;\n } else {\n warn('Trying to recover from ' + e.message);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n };\n function calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n }\n function calculateTileGrids(context, components) {\n var siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n var tile, tiles = [];\n var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (var q = 0; q < numYtiles; q++) {\n for (var p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n var componentsCount = siz.Csiz;\n for (var i = 0, ii = componentsCount; i < ii; i++) {\n var component = components[i];\n for (var j = 0, jj = tiles.length; j < jj; j++) {\n var tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n }\n function getBlocksDimensions(context, component, r) {\n var codOrCoc = component.codingStyleParameters;\n var result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :\n Math.min(codOrCoc.xcb, result.PPx));\n result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :\n Math.min(codOrCoc.ycb, result.PPy));\n return result;\n }\n function buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n var precinctWidth = 1 << dimensions.PPx;\n var precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n var isZeroRes = resolution.resLevel === 0;\n var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n var numprecinctswide = (resolution.trx1 > resolution.trx0 ?\n Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth) : 0);\n var numprecinctshigh = (resolution.try1 > resolution.try0 ?\n Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight) : 0);\n var numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth: precinctWidth,\n precinctHeight: precinctHeight,\n numprecinctswide: numprecinctswide,\n numprecinctshigh: numprecinctshigh,\n numprecincts: numprecincts,\n precinctWidthInSubband: precinctWidthInSubband,\n precinctHeightInSubband: precinctHeightInSubband\n };\n }\n function buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n var xcb_ = dimensions.xcb_;\n var ycb_ = dimensions.ycb_;\n var codeblockWidth = 1 << xcb_;\n var codeblockHeight = 1 << ycb_;\n var cbx0 = subband.tbx0 >> xcb_;\n var cby0 = subband.tby0 >> ycb_;\n var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n var precinctParameters = subband.resolution.precinctParameters;\n var codeblocks = [];\n var precincts = [];\n var i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1)\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband);\n var pj = Math.floor((codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband);\n precinctNumber = pi + (pj * precinctParameters.numprecinctswide);\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n var precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n }\n function createPacket(resolution, precinctNumber, layerNumber) {\n var precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n var subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (var i = 0, ii = subbands.length; i < ii; i++) {\n var subband = subbands[i];\n var codeblocks = subband.codeblocks;\n for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n var codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber: layerNumber,\n codeblocks: precinctCodeblocks\n };\n }\n function LayerResolutionComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var l = 0, r = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n };\n }\n function ResolutionLayerComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var r = 0, l = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n };\n }\n function ResolutionPositionComponentLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var l, r, c, p;\n var maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount);\n }\n var maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1);\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n var maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n var resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts);\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n };\n }\n function PositionComponentResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var precinctsIterationSizes = precinctsSizes;\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n };\n }\n function ComponentPositionResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n var component = tile.components[c];\n var precinctsIterationSizes = precinctsSizes.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n };\n }\n function getPrecinctIndexIfExist(\n pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n var posX = pxIndex * precinctIterationSizes.minWidth;\n var posY = pyIndex * precinctIterationSizes.minHeight;\n if (posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0) {\n return null;\n }\n var startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return (posX / sizeInImageScale.height) + startPrecinctRowIndex;\n }\n function getPrecinctSizesInImageScale(tile) {\n var componentsCount = tile.components.length;\n var minWidth = Number.MAX_VALUE;\n var minHeight = Number.MAX_VALUE;\n var maxNumWide = 0;\n var maxNumHigh = 0;\n var sizePerComponent = new Array(componentsCount);\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n var sizePerResolution = new Array(decompositionLevelsCount + 1);\n var minWidthCurrentComponent = Number.MAX_VALUE;\n var minHeightCurrentComponent = Number.MAX_VALUE;\n var maxNumWideCurrentComponent = 0;\n var maxNumHighCurrentComponent = 0;\n var scale = 1;\n for (var r = decompositionLevelsCount; r >= 0; --r) {\n var resolution = component.resolutions[r];\n var widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n var heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution);\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution);\n maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide);\n maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh);\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent\n };\n }\n return {\n components: sizePerComponent,\n minWidth: minWidth,\n minHeight: minHeight,\n maxNumWide: maxNumWide,\n maxNumHigh: maxNumHigh\n };\n }\n function buildPackets(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n var resolutions = [];\n var subbands = [];\n for (var r = 0; r <= decompositionLevelsCount; r++) {\n var blocksDimensions = getBlocksDimensions(context, component, r);\n var resolution = {};\n var scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n var subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = 'LL';\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n var bscale = 1 << (decompositionLevelsCount - r + 1);\n var resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = 'HL';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'LH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'HH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator =\n new LayerResolutionComponentPositionIterator(context);\n break;\n case 1:\n tile.packetsIterator =\n new ResolutionLayerComponentPositionIterator(context);\n break;\n case 2:\n tile.packetsIterator =\n new ResolutionPositionComponentLayerIterator(context);\n break;\n case 3:\n tile.packetsIterator =\n new PositionComponentResolutionLayerIterator(context);\n break;\n case 4:\n tile.packetsIterator =\n new ComponentPositionResolutionLayerIterator(context);\n break;\n default:\n throw new Error('JPX Error: Unsupported progression order ' +\n progressionOrder);\n }\n }\n function parseTilePackets(context, data, offset, dataLength) {\n var position = 0;\n var buffer, bufferSize = 0, skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n if(offset + position >= data.length){\n throw new Error(\"Unexpected EOF\");\n }\n var b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xFF) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (data[offset + position - 1] === 0xFF &&\n data[offset + position] === value) {\n skipBytes(1);\n return true;\n } else if (data[offset + position] === 0xFF &&\n data[offset + position + 1] === value) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n var value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var sopMarkerUsed = context.COD.sopMarkerUsed;\n var ephMarkerUsed = context.COD.ephMarkerUsed;\n var packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n try{\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n var packet = packetsIterator.nextPacket();\n if (packet === undefined) {\n //No more packets. Stream is probably truncated.\n return;\n }\n if (!readBits(1)) {\n continue;\n }\n var layerNumber = packet.layerNumber;\n var queue = [], codeblock;\n for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n var precinct = codeblock.precinct;\n var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n var codeblockRow = codeblock.cby - precinct.cbyMin;\n var codeblockIncluded = false;\n var firstTimeInclusion = false;\n var valueReady;\n if (codeblock['included'] !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n var inclusionTree, zeroBitPlanesTree;\n if (precinct['inclusionTree'] !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n var width = precinct.cbxMax - precinct.cbxMin + 1;\n var height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n }\n\n inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber);\n while (true) {\n if (position >= data.length) {\n return;\n }\n if (inclusionTree.isAboveThreshold()){\n break;\n }\n if (inclusionTree.isKnown()) {\n inclusionTree.nextLevel();\n continue;\n }\n if (readBits(1)) {\n inclusionTree.setKnown();\n if (inclusionTree.isLeaf()) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n } else {\n inclusionTree.nextLevel();\n }\n } else {\n inclusionTree.incrementValue();\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (position >= data.length) {\n return;\n }\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n var codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n var codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n var bits = ((codingpasses < (1 << codingpassesLog2)) ?\n codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n var codedDataLength = readBits(bits);\n queue.push({\n codeblock: codeblock,\n codingpasses: codingpasses,\n dataLength: codedDataLength\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n var packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock['data'] === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data: data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses\n });\n position += packetItem.dataLength;\n }\n } catch (e) {\n return;\n }\n }\n return position;\n }\n function copyCoefficients(coefficients, levelWidth, levelHeight, subband,\n delta, mb, reversible, segmentationSymbolUsed) {\n var x0 = subband.tbx0;\n var y0 = subband.tby0;\n var width = subband.tbx1 - subband.tbx0;\n var codeblocks = subband.codeblocks;\n var right = subband.type.charAt(0) === 'H' ? 1 : 0;\n var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;\n\n for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n var codeblock = codeblocks[i];\n var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock['data'] === undefined) {\n continue;\n }\n\n var bitModel, currentCodingpassType;\n bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,\n codeblock.zeroBitPlanes, mb);\n currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n var data = codeblock.data, totalLength = 0, codingpasses = 0;\n var j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n var encodedData = new Int16Array(totalLength);\n var position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropogationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;\n var sign = bitModel.coefficentsSign;\n var magnitude = bitModel.coefficentsMagnitude;\n var bitsDecoded = bitModel.bitsDecoded;\n var magnitudeCorrection = reversible ? 0 : 0.5;\n var k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n var interleave = (subband.type !== 'LL');\n for (j = 0; j < blockHeight; j++) {\n var row = (offset / width) | 0; // row in the non-interleaved subband\n var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n var pos = interleave ? (levelOffset + (offset << 1)) : offset;\n if (reversible && (nb >= mb)) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n }\n function transformTile(context, tile, c) {\n var component = tile.components[c];\n var codingStyleParameters = component.codingStyleParameters;\n var quantizationParameters = component.quantizationParameters;\n var decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n var spqcds = quantizationParameters.SPqcds;\n var scalarExpounded = quantizationParameters.scalarExpounded;\n var guardBits = quantizationParameters.guardBits;\n var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n var precision = context.components[c].precision;\n\n var reversible = codingStyleParameters.reversibleTransformation;\n var transform = (reversible ? new ReversibleTransform() :\n new IrreversibleTransform());\n\n var subbandCoefficients = [];\n var b = 0;\n for (var i = 0; i <= decompositionLevelsCount; i++) {\n var resolution = component.resolutions[i];\n\n var width = resolution.trx1 - resolution.trx0;\n var height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n var coefficients = new Float32Array(width * height);\n\n for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n var mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n var subband = resolution.subbands[j];\n var gainLog2 = SubbandsGainLog2[subband.type];\n\n // calulate quantization coefficient (Section E.1.1.1)\n var delta = (reversible ? 1 :\n Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048));\n var mb = (guardBits + epsilon - 1);\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(coefficients, width, height, subband, delta, mb,\n reversible, segmentationSymbolUsed);\n }\n subbandCoefficients.push({\n width: width,\n height: height,\n items: coefficients\n });\n }\n\n var result = transform.calculate(subbandCoefficients,\n component.tcx0, component.tcy0);\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items\n };\n }\n function transformComponents(context) {\n var siz = context.SIZ;\n var components = context.components;\n var componentsCount = siz.Csiz;\n var resultImages = [];\n for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n var tile = context.tiles[i];\n var transformedTiles = [];\n var c;\n for (c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n var tile0 = transformedTiles[0];\n var isSigned = components[0].isSigned;\n if (isSigned) {\n var out = new Int16Array(tile0.items.length * componentsCount);\n } else {\n var out = new Uint16Array(tile0.items.length * componentsCount);\n }\n var result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out\n };\n\n // Section G.2.2 Inverse multi component transform\n var shift, offset, max, min, maxK;\n var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n var fourComponents = componentsCount === 4;\n var y0items = transformedTiles[0].items;\n var y1items = transformedTiles[1].items;\n var y2items = transformedTiles[2].items;\n var y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n max = 255 * (1 << shift);\n maxK = max * 0.5;\n min = -maxK;\n\n var component0 = tile.components[0];\n var alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n r = y0 + 1.402 * y2;\n g = y0 - 0.34413 * y1 - 0.71414 * y2;\n b = y0 + 1.772 * y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n g = y0 - ((y2 + y1) >> 2);\n r = g + y2;\n b = g + y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n k = y3items[j];\n out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift;\n }\n }\n } else { // no multi-component transform\n for (c = 0; c < componentsCount; c++) {\n if (components[c].precision === 8){\n var items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n max = (127.5 * (1 << shift));\n min = -max;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n val = items[j];\n out[pos] = val <= min ? 0 :\n val >= max ? 255 : (val + offset) >> shift;\n pos += componentsCount;\n }\n }else{\n var isSigned = components[c].isSigned;\n var items = transformedTiles[c].items;\n\n if(isSigned){\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = items[j];\n pos += componentsCount;\n }\n }else{\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n var precisionMax = Math.pow(2,components[c].precision)-1;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n val = items[j];\n out[pos] = Math.max(Math.min((val + offset),precisionMax),0);\n pos += componentsCount;\n }\n }\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n }\n function initializeTile(context, tileIndex) {\n var siz = context.SIZ;\n var componentsCount = siz.Csiz;\n var tile = context.tiles[tileIndex];\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ?\n context.currentTile.QCC[c] : context.currentTile.QCD);\n component.quantizationParameters = qcdOrQcc;\n var codOrCoc = (context.currentTile.COC[c] !== undefined ?\n context.currentTile.COC[c] : context.currentTile.COD);\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n }\n\n // Section B.10.2 Tag trees\n var TagTree = (function TagTreeClosure() {\n function TagTree(width, height) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var level = {\n width: width,\n height: height,\n items: []\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n TagTree.prototype = {\n reset: function TagTree_reset(i, j) {\n var currentLevel = 0, value = 0, level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n var index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n },\n incrementValue: function TagTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index]++;\n },\n nextLevel: function TagTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n };\n return TagTree;\n })();\n\n var InclusionTree = (function InclusionTreeClosure() {\n function InclusionTree(width, height) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var items = new Uint8Array(width * height);\n var status = new Uint8Array(width * height);\n for (var j = 0, jj = items.length; j < jj; j++) {\n items[j] = 0;\n status[j] = 0;\n }\n\n var level = {\n width: width,\n height: height,\n items: items,\n status: status\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n InclusionTree.prototype = {\n reset: function InclusionTree_reset(i, j, stopValue) {\n this.currentStopValue = stopValue;\n var currentLevel = 0;\n while (currentLevel < this.levels.length) {\n var level = this.levels[currentLevel];\n var index = i + j * level.width;\n level.index = index;\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n\n this.currentLevel = this.levels.length - 1;\n this.minValue =this.levels[this.currentLevel].items[0];\n return;\n },\n incrementValue: function InclusionTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index] = level.items[level.index] + 1;\n if(level.items[level.index] > this.minValue) {\n this.minValue = level.items[level.index];\n }\n },\n nextLevel: function InclusionTree_nextLevel() {\n var currentLevel = this.currentLevel;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n } else {\n this.currentLevel = currentLevel;\n var level = this.levels[currentLevel];\n if(level.items[level.index] < this.minValue) {\n level.items[level.index] = this.minValue;\n }else if (level.items[level.index] > this.minValue) {\n this.minValue = level.items[level.index];\n }\n return true;\n }\n },\n isLeaf: function InclusionTree_isLeaf(){\n return (this.currentLevel === 0);\n },\n isAboveThreshold: function InclusionTree_isAboveThreshold(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n return (level.items[level.index] > this.currentStopValue);\n },\n isKnown: function InclusionTree_isKnown(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n return (level.status[level.index] > 0);\n },\n setKnown: function InclusionTree_setKnown(){\n var levelindex = this.currentLevel;\n var level = this.levels[levelindex];\n level.status[level.index] = 1;\n return;\n }\n\n };\n return InclusionTree;\n })();\n\n // Section D. Coefficient bit modeling\n var BitModel = (function BitModelClosure() {\n var UNIFORM_CONTEXT = 17;\n var RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n var LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n ]);\n var HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n ]);\n var HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n ]);\n\n function BitModel(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n this.contextLabelTable = (subband === 'HH' ? HHContextLabel :\n (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));\n\n var coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) :\n mb > 6 ? new Uint16Array(coefficientCount) :\n new Uint8Array(coefficientCount);\n this.processingFlags = new Uint8Array(coefficientCount);\n\n var bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (var i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n BitModel.prototype = {\n setDecoder: function BitModel_setDecoder(decoder) {\n this.decoder = decoder;\n },\n reset: function BitModel_reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n },\n setNeighborsSignificance:\n function BitModel_setNeighborsSignificance(row, column, index) {\n var neighborsSignificance = this.neighborsSignificance;\n var width = this.width, height = this.height;\n var left = (column > 0);\n var right = (column + 1 < width);\n var i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n },\n runSignificancePropogationPass:\n function BitModel_runSignificancePropogationPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var neighborsSignificance = this.neighborsSignificance;\n var processingFlags = this.processingFlags;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processedInverseMask = ~1;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n\n for (var i0 = 0; i0 < height; i0 += 4) {\n for (var j = 0; j < width; j++) {\n var index = i0 * width + j;\n for (var i1 = 0; i1 < 4; i1++, index += width) {\n var i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] ||\n !neighborsSignificance[index]) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n var sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contribution, sign0, sign1, significance1;\n var contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0);\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n var horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0);\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n },\n runMagnitudeRefinementPass:\n function BitModel_runMagnitudeRefinementPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var neighborsSignificance = this.neighborsSignificance;\n var contexts = this.contexts;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var length = width * height;\n var width4 = width * 4;\n\n for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (var j = 0; j < width; j++) {\n for (var index = index0 + j; index < indexNext; index += width) {\n\n // significant but not those that have just become\n if (!coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n var significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n var bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n runCleanupPass: function BitModel_runCleanupPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var neighborsSignificance = this.neighborsSignificance;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var oneRowDown = width;\n var twoRowsDown = width * 2;\n var threeRowsDown = width * 3;\n var iNext;\n for (var i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n var indexBase = i0 * width;\n var checkAllEmpty = i0 + 3 < height;\n for (var j = 0; j < width; j++) {\n var index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n var allEmpty = (checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0);\n var i1 = 0, index = index0;\n var i = i0, sign;\n if (allEmpty) {\n var hasSignificantCoefficent =\n decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (var i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n },\n checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n var decoder = this.decoder;\n var contexts = this.contexts;\n var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xA) {\n throw new Error('JPX Error: Invalid segmentation symbol');\n }\n }\n };\n\n return BitModel;\n })();\n\n // Section F, Discrete wavelet transformation\n var Transform = (function TransformClosure() {\n function Transform() {}\n\n Transform.prototype.calculate =\n function transformCalculate(subbands, u0, v0) {\n var ll = subbands[0];\n for (var i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n };\n Transform.prototype.extend = function extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n var i1 = offset - 1, j1 = offset + 1;\n var i2 = offset + size - 2, j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n };\n Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh,\n u0, v0) {\n var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;\n var width = hl_lh_hh.width;\n var height = hl_lh_hh.height;\n var items = hl_lh_hh.items;\n var i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n var bufferPadding = 4;\n var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(\n rowBuffer.subarray(bufferPadding, bufferPadding + width),\n k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n var numBuffers = 16;\n var colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n var b, currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n var buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return {\n width: width,\n height: height,\n items: items\n };\n };\n return Transform;\n })();\n\n // Section 3.8.2 Irreversible 9-7 filter\n var IrreversibleTransform = (function IrreversibleTransformClosure() {\n function IrreversibleTransform() {\n Transform.call(this);\n }\n\n IrreversibleTransform.prototype = Object.create(Transform.prototype);\n IrreversibleTransform.prototype.filter =\n function irreversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n, current, next;\n\n var alpha = -1.586134342059924;\n var beta = -0.052980118572961;\n var gamma = 0.882911075530934;\n var delta = 0.443506852043971;\n var K = 1.230174104914001;\n var K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j -1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n };\n\n return IrreversibleTransform;\n })();\n\n // Section 3.8.1 Reversible 5-3 filter\n var ReversibleTransform = (function ReversibleTransformClosure() {\n function ReversibleTransform() {\n Transform.call(this);\n }\n\n ReversibleTransform.prototype = Object.create(Transform.prototype);\n ReversibleTransform.prototype.filter =\n function reversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n };\n\n return ReversibleTransform;\n })();\n\n return JpxImage;\n})();\n\n\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\n/* This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure \n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n * \n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nvar ArithmeticDecoder = (function ArithmeticDecoderClosure() {\n // Table C-2\n var QeTable = [\n {qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1},\n {qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0},\n {qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0},\n {qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0},\n {qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0},\n {qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0},\n {qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1},\n {qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0},\n {qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0},\n {qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0},\n {qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0},\n {qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0},\n {qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0},\n {qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0},\n {qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1},\n {qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0},\n {qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0},\n {qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0},\n {qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0},\n {qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0},\n {qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0},\n {qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0},\n {qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0},\n {qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0},\n {qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0},\n {qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0},\n {qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0},\n {qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0},\n {qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0},\n {qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0},\n {qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0},\n {qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0},\n {qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0},\n {qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0},\n {qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0},\n {qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0},\n {qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0},\n {qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0},\n {qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0},\n {qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0},\n {qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0},\n {qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0},\n {qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0},\n {qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0},\n {qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0},\n {qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0},\n {qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0}\n ];\n\n // C.3.5 Initialisation of the decoder (INITDEC)\n function ArithmeticDecoder(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);\n this.clow = (this.clow << 7) & 0xFFFF;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n ArithmeticDecoder.prototype = {\n // C.3.4 Compressed data input (BYTEIN)\n byteIn: function ArithmeticDecoder_byteIn() {\n var data = this.data;\n var bp = this.bp;\n if (data[bp] === 0xFF) {\n var b1 = data[bp + 1];\n if (b1 > 0x8F) {\n this.clow += 0xFF00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += (data[bp] << 9);\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xFFFF) {\n this.chigh += (this.clow >> 16);\n this.clow &= 0xFFFF;\n }\n },\n // C.3.2 Decoding a decision (DECODE)\n readBit: function ArithmeticDecoder_readBit(contexts, pos) {\n // contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;\n var qeTableIcx = QeTable[cx_index];\n var qeIcx = qeTableIcx.qe;\n var d;\n var a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xFFFF;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n }\n };\n\n return ArithmeticDecoder;\n})();\n\n/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals Cmd, ColorSpace, Dict, MozBlobBuilder, Name, PDFJS, Ref, URL,\n Promise */\n\n'use strict';\n\nvar globalScope = (typeof window === 'undefined') ? this : window;\n\nvar isWorker = (typeof window === 'undefined');\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\n\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\n\nvar AnnotationType = {\n WIDGET: 1,\n TEXT: 2,\n LINK: 3\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10\n};\n\n// The global PDFJS object exposes the API\n// In production, it will be declared outside a global wrapper\n// In development, it will be declared here\nif (!globalScope.PDFJS) {\n globalScope.PDFJS = {};\n}\n\n//globalScope.PDFJS.pdfBug = false;\n\nvar PDFJS = PDFJS || {};\n\nPDFJS.VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5\n};\n\n// All the possible operations for an operator list.\nvar OPS = PDFJS.OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Fatal errors that should trigger the fallback UI and halt execution by\n// throwing an exception.\nfunction error(msg) {\n // If multiple arguments were passed, pass them all to the log function.\n if (arguments.length > 1) {\n var logArguments = ['Error:'];\n logArguments.push.apply(logArguments, arguments);\n console.log.apply(console, logArguments);\n // Join the arguments into a single string for the lines below.\n msg = [].join.call(arguments, ' ');\n } else {\n console.log('Error: ' + msg);\n }\n console.log(backtrace());\n UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);\n throw new Error(msg);\n}\n\nfunction backtrace() {\n try {\n throw new Error();\n } catch (e) {\n return e.stack ? e.stack.split('\\n').slice(2).join('\\n') : '';\n }\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n error(msg);\n }\n}\n\nvar UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font'\n};\n\nvar UnsupportedManager = PDFJS.UnsupportedManager =\n (function UnsupportedManagerClosure() {\n var listeners = [];\n return {\n listen: function (cb) {\n listeners.push(cb);\n },\n notify: function (featureId) {\n warn('Unsupported feature \"' + featureId + '\"');\n for (var i = 0, ii = listeners.length; i < ii; i++) {\n listeners[i](featureId);\n }\n }\n };\n})();\n\n// Combines two URLs. The baseUrl shall be absolute URL. If the url is an\n// absolute URL, it will be returned as is.\nfunction combineUrl(baseUrl, url) {\n if (!url) {\n return baseUrl;\n }\n if (/^[a-z][a-z0-9+\\-.]*:/i.test(url)) {\n return url;\n }\n var i;\n if (url.charAt(0) === '/') {\n // absolute path\n i = baseUrl.indexOf('://');\n if (url.charAt(1) === '/') {\n ++i;\n } else {\n i = baseUrl.indexOf('/', i + 3);\n }\n return baseUrl.substring(0, i) + url;\n } else {\n // relative path\n var pathLength = baseUrl.length;\n i = baseUrl.lastIndexOf('#');\n pathLength = i >= 0 ? i : pathLength;\n i = baseUrl.lastIndexOf('?', pathLength);\n pathLength = i >= 0 ? i : pathLength;\n var prefixLength = baseUrl.lastIndexOf('/', pathLength);\n return baseUrl.substring(0, prefixLength + 1) + url;\n }\n}\n\n// Validates if URL is safe and allowed, e.g. to avoid XSS.\nfunction isValidUrl(url, allowRelative) {\n if (!url) {\n return false;\n }\n // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)\n // scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n var protocol = /^[a-z][a-z0-9+\\-.]*(?=:)/i.exec(url);\n if (!protocol) {\n return allowRelative;\n }\n protocol = protocol[0].toLowerCase();\n switch (protocol) {\n case 'http':\n case 'https':\n case 'ftp':\n case 'mailto':\n case 'tel':\n return true;\n default:\n return false;\n }\n}\nPDFJS.isValidUrl = isValidUrl;\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value: value,\n enumerable: true,\n configurable: true,\n writable: false });\n return value;\n}\nPDFJS.shadow = shadow;\n\nvar PasswordResponses = PDFJS.PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\nPDFJS.PasswordException = PasswordException;\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\nPDFJS.UnknownErrorException = UnknownErrorException;\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\nPDFJS.InvalidPDFException = InvalidPDFException;\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\nPDFJS.MissingPDFException = MissingPDFException;\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\nPDFJS.UnexpectedResponseException = UnexpectedResponseException;\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(2);\n buffer8[0] = 1;\n var buffer16 = new Uint16Array(buffer8.buffer);\n return (buffer16[0] === 1);\n}\n\nObject.defineProperty(PDFJS, 'isLittleEndian', {\n configurable: true,\n get: function PDFJS_isLittleEndian() {\n return shadow(PDFJS, 'isLittleEndian', isLittleEndian());\n }\n});\n\n//#if !(FIREFOX || MOZCENTRAL || B2G || CHROME)\n//// Lazy test if the userAgant support CanvasTypedArrays\nfunction hasCanvasTypedArrays() {\n var canvas = document.createElement('canvas');\n canvas.width = canvas.height = 1;\n var ctx = canvas.getContext('2d');\n var imageData = ctx.createImageData(1, 1);\n return (typeof imageData.data.buffer !== 'undefined');\n}\n\nObject.defineProperty(PDFJS, 'hasCanvasTypedArrays', {\n configurable: true,\n get: function PDFJS_hasCanvasTypedArrays() {\n return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays());\n }\n});\n\nvar Uint32ArrayView = (function Uint32ArrayViewClosure() {\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length === undefined ? (this.byteLength >> 2) : length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get: function () {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set: function (value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n }\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n return Uint32ArrayView;\n})();\n//#else\n//PDFJS.hasCanvasTypedArrays = true;\n//#endif\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = PDFJS.Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty = function Util_getInheritableProperty(dict,\n name) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PDFJS.PageViewport\n */\nvar PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n //case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PDFJS.PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n };\n return PageViewport;\n})();\n\nvar PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isNull(v) {\n return v === null;\n}\n\nfunction isName(v) {\n return v instanceof Name;\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n if (!(v instanceof Dict)) {\n return false;\n }\n if (!type) {\n return true;\n }\n var dictType = v.get('Type');\n return isName(dictType) && dictType.name === type;\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isStream(v) {\n return typeof v === 'object' && v !== null && v.getBytes !== undefined;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fullfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias PDFJS.createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nPDFJS.createPromiseCapability = createPromiseCapability;\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libaries are:\n * - There currently isn't a seperate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function PromiseClosure() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) { resolve(value); });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch2 !== 'function') {\n globalScope.Promise.prototype.catch2 = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n//#if !MOZCENTRAL\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise: promise,\n time: Date.now()\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(function rejectionCheck() {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n warn(msg);\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }.bind(this), REJECTION_TIMEOUT);\n }\n };\n\n function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n }\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} array of data and/or promises to wait for.\n * @return {Promise} New dependant promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) { resolve(value); });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) { reject(reason); });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve: onResolve,\n onReject: onReject,\n nextPromise: nextPromise\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch2: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n }\n };\n\n globalScope.Promise = Promise;\n//#else\n//throw new Error('DOM Promise is not present');\n//#endif\n})();\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = {};\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end': Date.now()\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n },\n toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n }\n };\n return StatTimer;\n})();\n\nPDFJS.createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType });\n }\n // Blob builder is deprecated in FF14 and removed in FF18.\n var bb = new MozBlobBuilder();\n bb.append(data);\n return bb.getBlob(contentType);\n};\n\nPDFJS.createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType) {\n if (!PDFJS.disableCreateObjectURL &&\n typeof URL !== 'undefined' && URL.createObjectURL) {\n var blob = PDFJS.createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction MessageHandler(name, comObj) {\n this.name = name;\n this.comObj = comObj;\n this.callbackIndex = 1;\n this.postMessageTransfers = true;\n var callbacksCapabilities = this.callbacksCapabilities = {};\n var ah = this.actionHandler = {};\n\n ah['console_log'] = [function ahConsoleLog(data) {\n console.log.apply(console, data);\n }];\n ah['console_error'] = [function ahConsoleError(data) {\n console.error.apply(console, data);\n }];\n ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) {\n UnsupportedManager.notify(data);\n }];\n\n comObj.onmessage = function messageHandlerComObjOnMessage(event) {\n var data = event.data;\n if (data.isReply) {\n var callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n var callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(data.error);\n } else {\n callback.resolve(data.data);\n }\n } else {\n error('Cannot resolve callback ' + callbackId);\n }\n } else if (data.action in ah) {\n var action = ah[data.action];\n if (data.callbackId) {\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then(function (result) {\n comObj.postMessage({\n isReply: true,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n isReply: true,\n callbackId: data.callbackId,\n error: reason\n });\n });\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n error('Unknown action from worker: ' + data.action);\n }\n };\n}\n\nMessageHandler.prototype = {\n on: function messageHandlerOn(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n error('There is already an actionName called \"' + actionName + '\"');\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName Action to call.\n * @param {JSON} data JSON data to send.\n * @param {Array} [transfers] Optional list of transfers/ArrayBuffers\n */\n send: function messageHandlerSend(actionName, data, transfers) {\n var message = {\n action: actionName,\n data: data\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that other side will callback with the response.\n * @param {String} actionName Action to call.\n * @param {JSON} data JSON data to send.\n * @param {Array} [transfers] Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise:\n function messageHandlerSendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackIndex++;\n var message = {\n action: actionName,\n data: data,\n callbackId: callbackId\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends raw message to the comObj.\n * @private\n * @param message {Object} Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage: function (message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n};\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}\n\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = JpxImage;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/lib/jpx.js\n// module id = 37\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.CompressionUtils = daikon.CompressionUtils || {};\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.CompressionUtils.JPEG_MAGIC_NUMBER = [0xFF, 0xD8];\ndaikon.CompressionUtils.JPEG2000_MAGIC_NUMBER = [0xFF, 0x4F, 0xFF, 0x51];\n\n\n/*** Static methods ***/\n\ndaikon.CompressionUtils.isHeaderJPEG = function (data) {\n if (data) {\n if (data.getUint8(0) !== daikon.CompressionUtils.JPEG_MAGIC_NUMBER[0]) {\n return false;\n }\n\n if (data.getUint8(1) !== daikon.CompressionUtils.JPEG_MAGIC_NUMBER[1]) {\n return false;\n }\n\n return true;\n }\n\n return false;\n};\n\n\ndaikon.CompressionUtils.isHeaderJPEG2000 = function (data) {\n var ctr;\n\n if (data) {\n for (ctr = 0; ctr < daikon.CompressionUtils.JPEG2000_MAGIC_NUMBER.length; ctr+=1) {\n if (data.getUint8(ctr) !== daikon.CompressionUtils.JPEG2000_MAGIC_NUMBER[ctr]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.CompressionUtils;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/compression-utils.js\n// module id = 38\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require */\n\n\"use strict\";\n\n// Based on: http://stackoverflow.com/questions/3549894/javascript-data-structure-for-fast-lookup-and-ordered-looping\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.OrderedMapIterator = daikon.OrderedMapIterator || ((typeof require !== 'undefined') ? require('./iterator.js') : null);\n\n\n/*** Constructor ***/\ndaikon.OrderedMap = daikon.OrderedMap || function () {\n this.map = {};\n this.orderedKeys = [];\n};\n\n\n\ndaikon.OrderedMap.prototype.put = function(key, value) {\n if (key in this.map) { // key already exists, replace value\n this.map[key] = value;\n } else { // insert new key and value\n this.orderedKeys.push(key);\n this.orderedKeys.sort(function(a, b) { return parseFloat(a) - parseFloat(b); });\n this.map[key] = value;\n }\n};\n\n\n\ndaikon.OrderedMap.prototype.remove = function(key) {\n var index = this.orderedKeys.indexOf(key);\n if(index === -1) {\n throw new Error('key does not exist');\n }\n\n this.orderedKeys.splice(index, 1);\n delete this.map[key];\n};\n\n\n\ndaikon.OrderedMap.prototype.get = function(key) {\n if (key in this.map) {\n return this.map[key];\n }\n\n return null;\n};\n\n\n\ndaikon.OrderedMap.prototype.iterator = function() {\n return new daikon.OrderedMapIterator(this);\n};\n\n\n\ndaikon.OrderedMap.prototype.getOrderedValues = function() {\n var orderedValues = [], it = this.iterator();\n\n while (it.hasNext()) {\n orderedValues.push(it.next());\n }\n\n return orderedValues;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.OrderedMap;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/orderedmap.js\n// module id = 39\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\n\n\n/*** Constructor ***/\n\n/**\n * The RLE constructor.\n * @type {Function}\n */\ndaikon.RLE = daikon.RLE || function () {\n this.rawData = null;\n this.bytesRead = 0;\n this.bytesPut = 0;\n this.segElemPut = 0;\n this.numSegments = 0;\n this.segmentOffsets = [];\n this.littleEndian = true;\n this.segmentIndex = 0;\n this.numElements = 0;\n this.size = 0;\n this.output = null;\n};\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.RLE.HEADER_SIZE = 64;\n\n\n/*** Prototype Methods ***/\n\n/**\n * Decodes the RLE data.\n * @param {ArrayBuffer} data\n * @param {boolean} littleEndian\n * @param {number} numElements\n * @returns {DataView}\n */\ndaikon.RLE.prototype.decode = function (data, littleEndian, numElements) {\n var ctr;\n\n this.rawData = new DataView(data);\n this.littleEndian = littleEndian;\n this.numElements = numElements;\n\n this.readHeader();\n this.output = new DataView(new ArrayBuffer(this.size));\n\n for (ctr = 0; ctr < this.numSegments; ctr+=1) {\n this.readNextSegment();\n }\n\n return this.processData();\n};\n\n\ndaikon.RLE.prototype.processData = function () {\n /*jslint bitwise: true */\n\n var ctr, temp1, temp2, temp3, value, outputProcessed, offset;\n\n if (this.numSegments === 1) {\n return this.output;\n } else if (this.numSegments === 2) {\n outputProcessed = new DataView(new ArrayBuffer(this.size));\n\n for (ctr = 0; ctr < this.numElements; ctr+=1) {\n temp1 = (this.output.getInt8(ctr));\n temp2 = (this.output.getInt8(ctr + this.numElements));\n value = (((temp1 & 0xFF) << 8) | (temp2 & 0xFF));\n outputProcessed.setInt16(ctr * 2, value, this.littleEndian);\n }\n\n return outputProcessed;\n } else if (this.numSegments === 3) { // rgb\n outputProcessed = new DataView(new ArrayBuffer(this.size));\n offset = (2 * this.numElements);\n\n for (ctr = 0; ctr < this.numElements; ctr+=1) {\n outputProcessed.setInt8(ctr * 3, this.output.getInt8(ctr));\n outputProcessed.setInt8(ctr * 3 + 1, this.output.getInt8(ctr + this.numElements));\n outputProcessed.setInt8(ctr * 3 + 2, this.output.getInt8(ctr + offset));\n }\n\n return outputProcessed;\n } else {\n throw new Error(\"RLE data with \" + this.numSegments + \" segments is not supported!\");\n }\n};\n\n\n\ndaikon.RLE.prototype.readHeader = function () {\n var ctr;\n\n this.numSegments = this.getInt32();\n this.size = this.numElements * this.numSegments;\n\n for (ctr = 0; ctr < this.numSegments; ctr+=1) {\n this.segmentOffsets[ctr] = this.getInt32();\n }\n\n this.bytesRead = daikon.RLE.HEADER_SIZE;\n};\n\n\n\ndaikon.RLE.prototype.hasValidInput = function () {\n return ((this.bytesRead < this.rawData.buffer.byteLength) &&\n (this.bytesPut < this.size) && (this.segElemPut < this.numElements));\n};\n\n\n\ndaikon.RLE.prototype.readNextSegment = function () {\n var code;\n\n this.bytesRead = this.segmentOffsets[this.segmentIndex];\n this.segElemPut = 0;\n\n while (this.hasValidInput()) {\n code = this.get();\n\n if ((code >= 0) && (code < 128)) {\n this.readLiteral(code);\n } else if ((code <= -1) && (code > -128)) {\n this.readEncoded(code);\n } else if (code === -128) {\n console.warn(\"RLE: unsupported code!\");\n }\n }\n\n this.segmentIndex+=1;\n};\n\n\n\ndaikon.RLE.prototype.readLiteral = function (code) {\n var ctr, length = (code + 1);\n\n if (this.hasValidInput()) {\n for (ctr = 0; ctr < length; ctr+=1) {\n this.put(this.get());\n }\n } else {\n console.warn(\"RLE: insufficient data!\");\n }\n};\n\n\n\ndaikon.RLE.prototype.readEncoded = function (code) {\n var ctr,\n runLength = (1 - code),\n encoded = this.get();\n\n for (ctr = 0; ctr < runLength; ctr+=1) {\n this.put(encoded);\n }\n};\n\n\n\ndaikon.RLE.prototype.getInt32 = function () {\n var value = this.rawData.getInt32(this.bytesRead, this.littleEndian);\n this.bytesRead += 4;\n return value;\n};\n\n\n\ndaikon.RLE.prototype.getInt16 = function () {\n var value = this.rawData.getInt16(this.bytesRead, this.littleEndian);\n this.bytesRead += 2;\n return value;\n};\n\n\n\ndaikon.RLE.prototype.get = function () {\n var value = this.rawData.getInt8(this.bytesRead);\n this.bytesRead += 1;\n return value;\n};\n\n\n\ndaikon.RLE.prototype.put = function (val) {\n this.output.setInt8(this.bytesPut, val);\n this.bytesPut += 1;\n this.segElemPut += 1;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.RLE;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/rle.js\n// module id = 40\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Siemens constructor.\n * @params {ArrayBuffer} buffer\n * @type {Function}\n */\ndaikon.Siemens = daikon.Siemens || function (buffer) {\n this.output = \"\";\n this.data = new DataView(buffer, 0);\n};\n\n\n/*** Static Pseudo-constants ***/\n\ndaikon.Siemens.CSA2_MAGIC_NUMBER = [83, 86, 49, 48];\ndaikon.Siemens.NAME_LENGTH = 64;\ndaikon.Siemens.ELEMENT_CSA1 = 0x1010;\ndaikon.Siemens.ELEMENT_CSA2 = 0x1020;\ndaikon.Siemens.GROUP_CSA = 0x029;\n\n\n/*** Prototype Methods ***/\n\n/**\n * Reads the Siemens header. (See http://nipy.org/nibabel/dicom/siemens_csa.html)\n * @returns {string}\n */\ndaikon.Siemens.prototype.readHeader = function () {\n /*jslint bitwise: true */\n\n var ctr, match;\n\n try {\n if (this.data.byteLength > daikon.Siemens.CSA2_MAGIC_NUMBER.length) {\n match = true;\n\n for (ctr = 0; ctr < daikon.Siemens.CSA2_MAGIC_NUMBER.length; ctr += 1) {\n match &= (this.data.getUint8(ctr) === daikon.Siemens.CSA2_MAGIC_NUMBER[ctr]);\n }\n\n if (match) {\n this.readHeaderAtOffset(daikon.Siemens.CSA2_MAGIC_NUMBER.length + 4);\n } else {\n this.readHeaderAtOffset(0);\n }\n }\n } catch (error) {\n console.log(error);\n }\n\n return this.output;\n};\n\n\n\ndaikon.Siemens.prototype.readHeaderAtOffset = function (offset) {\n var numTags, ctr;\n\n this.output += '\\n';\n\n numTags = daikon.Utils.swap32(this.data.getUint32(offset));\n\n if ((numTags < 1) || (numTags > 128)) {\n return this.output;\n }\n\n offset += 4;\n\n offset += 4; // unused\n\n for (ctr = 0; ctr < numTags; ctr += 1) {\n offset = this.readTag(offset);\n\n if (offset === -1) {\n break;\n }\n }\n\n return this.output;\n};\n\n\n\ndaikon.Siemens.prototype.readTag = function (offset) {\n var name, ctr, numItems;\n\n name = this.readString(offset, daikon.Siemens.NAME_LENGTH);\n\n offset += daikon.Siemens.NAME_LENGTH;\n\n offset += 4; // vm\n\n offset += 4;\n\n offset += 4; // syngodt\n\n numItems = daikon.Utils.swap32(this.data.getUint32(offset));\n offset += 4;\n\n offset += 4; // unused\n\n this.output += (\" \" + name + \"=\");\n\n for (ctr = 0; ctr < numItems; ctr += 1) {\n offset = this.readItem(offset);\n\n if (offset === -1) {\n break;\n } else if ((offset % 4) !== 0) {\n offset += (4 - (offset % 4));\n }\n }\n\n this.output += ('\\n');\n\n return offset;\n};\n\n\n\ndaikon.Siemens.prototype.readString = function (offset, length) {\n var char2, ctr, str = \"\";\n\n for (ctr = 0; ctr < length; ctr += 1) {\n char2 = this.data.getUint8(offset + ctr);\n\n if (char2 === 0) {\n break;\n }\n\n str += String.fromCharCode(char2);\n }\n\n return str;\n};\n\n\n\ndaikon.Siemens.prototype.readItem = function (offset) {\n var itemLength;\n\n itemLength = daikon.Utils.swap32(this.data.getUint32(offset));\n\n if ((offset + itemLength) > this.data.buffer.length) {\n return -1;\n }\n\n offset += 16;\n\n if (itemLength > 0) {\n this.output += (this.readString(offset, itemLength) + \" \");\n }\n\n return offset + itemLength;\n};\n\n\n/**\n * Returns true if the specified group and element indicate this tag can be read.\n * @param {number} group\n * @param {number} element\n * @returns {boolean}\n */\ndaikon.Siemens.prototype.canRead = function (group, element) {\n return (group === daikon.Siemens.GROUP_CSA) && ((element === daikon.Siemens.ELEMENT_CSA1) || (element === daikon.Siemens.ELEMENT_CSA2));\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Siemens;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/siemens.js\n// module id = 41\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 3x3 Matrix\n * @name mat3\n */\nvar mat3 = {};\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\nmat3.create = function() {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n};\n\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {mat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\nmat3.fromMat4 = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n};\n\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {mat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\nmat3.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n};\n\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nmat3.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n};\n\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\nmat3.identity = function(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n};\n\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nmat3.transpose = function(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n \n return out;\n};\n\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nmat3.invert = function(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8],\n\n b01 = a22 * a11 - a12 * a21,\n b11 = -a22 * a10 + a12 * a20,\n b21 = a21 * a10 - a11 * a20,\n\n // Calculate the determinant\n det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) { \n return null; \n }\n det = 1.0 / det;\n\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n};\n\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nmat3.adjoint = function(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8];\n\n out[0] = (a11 * a22 - a12 * a21);\n out[1] = (a02 * a21 - a01 * a22);\n out[2] = (a01 * a12 - a02 * a11);\n out[3] = (a12 * a20 - a10 * a22);\n out[4] = (a00 * a22 - a02 * a20);\n out[5] = (a02 * a10 - a00 * a12);\n out[6] = (a10 * a21 - a11 * a20);\n out[7] = (a01 * a20 - a00 * a21);\n out[8] = (a00 * a11 - a01 * a10);\n return out;\n};\n\n/**\n * Calculates the determinant of a mat3\n *\n * @param {mat3} a the source matrix\n * @returns {Number} determinant of a\n */\nmat3.determinant = function (a) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8];\n\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n};\n\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @returns {mat3} out\n */\nmat3.multiply = function (out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8],\n\n b00 = b[0], b01 = b[1], b02 = b[2],\n b10 = b[3], b11 = b[4], b12 = b[5],\n b20 = b[6], b21 = b[7], b22 = b[8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n};\n\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\nmat3.mul = mat3.multiply;\n\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to translate\n * @param {vec2} v vector to translate by\n * @returns {mat3} out\n */\nmat3.translate = function(out, a, v) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8],\n x = v[0], y = v[1];\n\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n};\n\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nmat3.rotate = function (out, a, rad) {\n var a00 = a[0], a01 = a[1], a02 = a[2],\n a10 = a[3], a11 = a[4], a12 = a[5],\n a20 = a[6], a21 = a[7], a22 = a[8],\n\n s = Math.sin(rad),\n c = Math.cos(rad);\n\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n};\n\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\nmat3.scale = function(out, a, v) {\n var x = v[0], y = v[1];\n\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n};\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {vec2} v Translation vector\n * @returns {mat3} out\n */\nmat3.fromTranslation = function(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nmat3.fromRotation = function(out, rad) {\n var s = Math.sin(rad), c = Math.cos(rad);\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat3} out\n */\nmat3.fromScaling = function(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat2d} a the matrix to copy\n * @returns {mat3} out\n **/\nmat3.fromMat2d = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n};\n\n/**\n* Calculates a 3x3 matrix from the given quaternion\n*\n* @param {mat3} out mat3 receiving operation result\n* @param {quat} q Quaternion to create matrix from\n*\n* @returns {mat3} out\n*/\nmat3.fromQuat = function (out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n yx = y * x2,\n yy = y * y2,\n zx = z * x2,\n zy = z * y2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n\n return out;\n};\n\n/**\n* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n*\n* @param {mat3} out mat3 receiving operation result\n* @param {mat4} a Mat4 to derive the normal matrix from\n*\n* @returns {mat3} out\n*/\nmat3.normalFromMat4 = function (out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n // Calculate the determinant\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) { \n return null; \n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n\n return out;\n};\n\n/**\n * Returns a string representation of a mat3\n *\n * @param {mat3} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nmat3.str = function (a) {\n return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + \n a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + \n a[6] + ', ' + a[7] + ', ' + a[8] + ')';\n};\n\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {mat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nmat3.frob = function (a) {\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2)))\n};\n\n\nmodule.exports = mat3;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat3.js\n// module id = 42\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 3 Dimensional Vector\n * @name vec3\n */\nvar vec3 = {};\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\nvec3.create = function() {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n return out;\n};\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nvec3.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n};\n\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\nvec3.fromValues = function(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n};\n\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the source vector\n * @returns {vec3} out\n */\nvec3.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n};\n\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\nvec3.set = function(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n};\n\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.add = function(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n};\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.subtract = function(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n};\n\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\nvec3.sub = vec3.subtract;\n\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.multiply = function(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n};\n\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\nvec3.mul = vec3.multiply;\n\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.divide = function(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n};\n\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\nvec3.div = vec3.divide;\n\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.min = function(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n};\n\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.max = function(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n};\n\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\nvec3.scale = function(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n};\n\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\nvec3.scaleAndAdd = function(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale);\n out[1] = a[1] + (b[1] * scale);\n out[2] = a[2] + (b[2] * scale);\n return out;\n};\n\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} distance between a and b\n */\nvec3.distance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2];\n return Math.sqrt(x*x + y*y + z*z);\n};\n\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\nvec3.dist = vec3.distance;\n\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\nvec3.squaredDistance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2];\n return x*x + y*y + z*z;\n};\n\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\nvec3.sqrDist = vec3.squaredDistance;\n\n/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nvec3.length = function (a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n return Math.sqrt(x*x + y*y + z*z);\n};\n\n/**\n * Alias for {@link vec3.length}\n * @function\n */\nvec3.len = vec3.length;\n\n/**\n * Calculates the squared length of a vec3\n *\n * @param {vec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nvec3.squaredLength = function (a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n return x*x + y*y + z*z;\n};\n\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\nvec3.sqrLen = vec3.squaredLength;\n\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to negate\n * @returns {vec3} out\n */\nvec3.negate = function(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n};\n\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to invert\n * @returns {vec3} out\n */\nvec3.inverse = function(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n};\n\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */\nvec3.normalize = function(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var len = x*x + y*y + z*z;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n }\n return out;\n};\n\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */\nvec3.dot = function (a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n};\n\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nvec3.cross = function(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2],\n bx = b[0], by = b[1], bz = b[2];\n\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n};\n\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */\nvec3.lerp = function (out, a, b, t) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n};\n\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {vec3} c the third operand\n * @param {vec3} d the fourth operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */\nvec3.hermite = function (out, a, b, c, d, t) {\n var factorTimes2 = t * t,\n factor1 = factorTimes2 * (2 * t - 3) + 1,\n factor2 = factorTimes2 * (t - 2) + t,\n factor3 = factorTimes2 * (t - 1),\n factor4 = factorTimes2 * (3 - 2 * t);\n \n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n \n return out;\n};\n\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {vec3} c the third operand\n * @param {vec3} d the fourth operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec3} out\n */\nvec3.bezier = function (out, a, b, c, d, t) {\n var inverseFactor = 1 - t,\n inverseFactorTimesTwo = inverseFactor * inverseFactor,\n factorTimes2 = t * t,\n factor1 = inverseFactorTimesTwo * inverseFactor,\n factor2 = 3 * t * inverseFactorTimesTwo,\n factor3 = 3 * factorTimes2 * inverseFactor,\n factor4 = factorTimes2 * t;\n \n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n \n return out;\n};\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\nvec3.random = function (out, scale) {\n scale = scale || 1.0;\n\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = (glMatrix.RANDOM() * 2.0) - 1.0;\n var zScale = Math.sqrt(1.0-z*z) * scale;\n\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n};\n\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */\nvec3.transformMat4 = function(out, a, m) {\n var x = a[0], y = a[1], z = a[2],\n w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n};\n\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\nvec3.transformMat3 = function(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n};\n\n/**\n * Transforms the vec3 with a quat\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec3} out\n */\nvec3.transformQuat = function(out, a, q) {\n // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations\n\n var x = a[0], y = a[1], z = a[2],\n qx = q[0], qy = q[1], qz = q[2], qw = q[3],\n\n // calculate quat * vec\n ix = qw * x + qy * z - qz * y,\n iy = qw * y + qz * x - qx * z,\n iz = qw * z + qx * y - qy * x,\n iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return out;\n};\n\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nvec3.rotateX = function(out, a, b, c){\n var p = [], r=[];\n\t //Translate point to the origin\n\t p[0] = a[0] - b[0];\n\t p[1] = a[1] - b[1];\n \tp[2] = a[2] - b[2];\n\n\t //perform rotation\n\t r[0] = p[0];\n\t r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c);\n\t r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c);\n\n\t //translate to correct position\n\t out[0] = r[0] + b[0];\n\t out[1] = r[1] + b[1];\n\t out[2] = r[2] + b[2];\n\n \treturn out;\n};\n\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nvec3.rotateY = function(out, a, b, c){\n \tvar p = [], r=[];\n \t//Translate point to the origin\n \tp[0] = a[0] - b[0];\n \tp[1] = a[1] - b[1];\n \tp[2] = a[2] - b[2];\n \n \t//perform rotation\n \tr[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c);\n \tr[1] = p[1];\n \tr[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c);\n \n \t//translate to correct position\n \tout[0] = r[0] + b[0];\n \tout[1] = r[1] + b[1];\n \tout[2] = r[2] + b[2];\n \n \treturn out;\n};\n\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @returns {vec3} out\n */\nvec3.rotateZ = function(out, a, b, c){\n \tvar p = [], r=[];\n \t//Translate point to the origin\n \tp[0] = a[0] - b[0];\n \tp[1] = a[1] - b[1];\n \tp[2] = a[2] - b[2];\n \n \t//perform rotation\n \tr[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c);\n \tr[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c);\n \tr[2] = p[2];\n \n \t//translate to correct position\n \tout[0] = r[0] + b[0];\n \tout[1] = r[1] + b[1];\n \tout[2] = r[2] + b[2];\n \n \treturn out;\n};\n\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nvec3.forEach = (function() {\n var vec = vec3.create();\n\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if(!stride) {\n stride = 3;\n }\n\n if(!offset) {\n offset = 0;\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length);\n } else {\n l = a.length;\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2];\n fn(vec, vec, arg);\n a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2];\n }\n \n return a;\n };\n})();\n\n/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */\nvec3.angle = function(a, b) {\n \n var tempA = vec3.fromValues(a[0], a[1], a[2]);\n var tempB = vec3.fromValues(b[0], b[1], b[2]);\n \n vec3.normalize(tempA, tempA);\n vec3.normalize(tempB, tempB);\n \n var cosine = vec3.dot(tempA, tempB);\n\n if(cosine > 1.0){\n return 0;\n } else {\n return Math.acos(cosine);\n } \n};\n\n/**\n * Returns a string representation of a vector\n *\n * @param {vec3} vec vector to represent as a string\n * @returns {String} string representation of the vector\n */\nvec3.str = function (a) {\n return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')';\n};\n\nmodule.exports = vec3;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec3.js\n// module id = 43\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 4 Dimensional Vector\n * @name vec4\n */\nvar vec4 = {};\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\nvec4.create = function() {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n return out;\n};\n\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {vec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\nvec4.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n};\n\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\nvec4.fromValues = function(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n};\n\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the source vector\n * @returns {vec4} out\n */\nvec4.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n};\n\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\nvec4.set = function(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n};\n\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.add = function(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n};\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.subtract = function(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n};\n\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\nvec4.sub = vec4.subtract;\n\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.multiply = function(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n};\n\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\nvec4.mul = vec4.multiply;\n\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.divide = function(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n};\n\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\nvec4.div = vec4.divide;\n\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.min = function(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n};\n\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nvec4.max = function(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n};\n\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\nvec4.scale = function(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n};\n\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\nvec4.scaleAndAdd = function(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale);\n out[1] = a[1] + (b[1] * scale);\n out[2] = a[2] + (b[2] * scale);\n out[3] = a[3] + (b[3] * scale);\n return out;\n};\n\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} distance between a and b\n */\nvec4.distance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2],\n w = b[3] - a[3];\n return Math.sqrt(x*x + y*y + z*z + w*w);\n};\n\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\nvec4.dist = vec4.distance;\n\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\nvec4.squaredDistance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1],\n z = b[2] - a[2],\n w = b[3] - a[3];\n return x*x + y*y + z*z + w*w;\n};\n\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\nvec4.sqrDist = vec4.squaredDistance;\n\n/**\n * Calculates the length of a vec4\n *\n * @param {vec4} a vector to calculate length of\n * @returns {Number} length of a\n */\nvec4.length = function (a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n return Math.sqrt(x*x + y*y + z*z + w*w);\n};\n\n/**\n * Alias for {@link vec4.length}\n * @function\n */\nvec4.len = vec4.length;\n\n/**\n * Calculates the squared length of a vec4\n *\n * @param {vec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nvec4.squaredLength = function (a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n return x*x + y*y + z*z + w*w;\n};\n\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\nvec4.sqrLen = vec4.squaredLength;\n\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to negate\n * @returns {vec4} out\n */\nvec4.negate = function(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n};\n\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to invert\n * @returns {vec4} out\n */\nvec4.inverse = function(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n};\n\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to normalize\n * @returns {vec4} out\n */\nvec4.normalize = function(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var len = x*x + y*y + z*z + w*w;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n }\n return out;\n};\n\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} dot product of a and b\n */\nvec4.dot = function (a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n};\n\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec4} out\n */\nvec4.lerp = function (out, a, b, t) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n};\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\nvec4.random = function (out, scale) {\n scale = scale || 1.0;\n\n //TODO: This is a pretty awful way of doing this. Find something better.\n out[0] = glMatrix.RANDOM();\n out[1] = glMatrix.RANDOM();\n out[2] = glMatrix.RANDOM();\n out[3] = glMatrix.RANDOM();\n vec4.normalize(out, out);\n vec4.scale(out, out, scale);\n return out;\n};\n\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec4} out\n */\nvec4.transformMat4 = function(out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n};\n\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec4} out\n */\nvec4.transformQuat = function(out, a, q) {\n var x = a[0], y = a[1], z = a[2],\n qx = q[0], qy = q[1], qz = q[2], qw = q[3],\n\n // calculate quat * vec\n ix = qw * x + qy * z - qz * y,\n iy = qw * y + qz * x - qx * z,\n iz = qw * z + qx * y - qy * x,\n iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n};\n\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nvec4.forEach = (function() {\n var vec = vec4.create();\n\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if(!stride) {\n stride = 4;\n }\n\n if(!offset) {\n offset = 0;\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length);\n } else {\n l = a.length;\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3];\n fn(vec, vec, arg);\n a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3];\n }\n \n return a;\n };\n})();\n\n/**\n * Returns a string representation of a vector\n *\n * @param {vec4} vec vector to represent as a string\n * @returns {String} string representation of the vector\n */\nvec4.str = function (a) {\n return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n};\n\nmodule.exports = vec4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec4.js\n// module id = 44\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || function () {\n this.hSamp = 0; // Horizontal sampling factor\n this.quantTableSel = 0; // Quantization table destination selector\n this.vSamp = 0; // Vertical\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ComponentSpec;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/component-spec.js\n// module id = 45\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || function () {\n this.components = []; // Components\n this.dimX = 0; // Number of samples per line\n this.dimY = 0; // Number of lines\n this.numComp = 0; // Number of component in the frame\n this.precision = 0; // Sample Precision (from the original image)\n};\n\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.FrameHeader.prototype.read = function (data) {\n /*jslint bitwise: true */\n\n var count = 0, length, i, c, temp;\n\n length = data.get16();\n count += 2;\n\n this.precision = data.get8();\n count+=1;\n\n this.dimY = data.get16();\n count += 2;\n\n this.dimX = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count+=1;\n for (i = 1; i <= this.numComp; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: frame format error\");\n }\n\n c = data.get8();\n count+=1;\n\n if (count >= length) {\n throw new Error(\"ERROR: frame format error [c>=Lf]\");\n }\n\n temp = data.get8();\n count+=1;\n\n if (!this.components[c]) {\n this.components[c] = new jpeg.lossless.ComponentSpec();\n }\n\n this.components[c].hSamp = temp >> 4;\n this.components[c].vSamp = temp & 0x0F;\n this.components[c].quantTableSel = data.get8();\n count+=1;\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: frame format error [Lf!=count]\");\n }\n\n return 1;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.FrameHeader;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/frame-header.js\n// module id = 46\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || function () {\n this.l = jpeg.lossless.Utils.createArray(4, 2, 16);\n this.th = [];\n this.v = jpeg.lossless.Utils.createArray(4, 2, 16, 200);\n this.tc = jpeg.lossless.Utils.createArray(4, 2);\n\n this.tc[0][0] = 0;\n this.tc[1][0] = 0;\n this.tc[2][0] = 0;\n this.tc[3][0] = 0;\n this.tc[0][1] = 0;\n this.tc[1][1] = 0;\n this.tc[2][1] = 0;\n this.tc[3][1] = 0;\n this.th[0] = 0;\n this.th[1] = 0;\n this.th[2] = 0;\n this.th[3] = 0;\n};\n\n\n\n/*** Static Pseudo-constants ***/\n\njpeg.lossless.HuffmanTable.MSB = 0x80000000;\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.HuffmanTable.prototype.read = function(data, HuffTab) {\n /*jslint bitwise: true */\n\n var count = 0, length, temp, t, c, i, j;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count+=1;\n t = temp & 0x0F;\n if (t > 3) {\n throw new Error(\"ERROR: Huffman table ID > 3\");\n }\n\n c = temp >> 4;\n if (c > 2) {\n throw new Error(\"ERROR: Huffman table [Table class > 2 ]\");\n }\n\n this.th[t] = 1;\n this.tc[t][c] = 1;\n\n for (i = 0; i < 16; i+=1) {\n this.l[t][c][i] = data.get8();\n count+=1;\n }\n\n for (i = 0; i < 16; i+=1) {\n for (j = 0; j < this.l[t][c][i]; j+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Huffman table format error [count>Lh]\");\n }\n\n this.v[t][c][i][j] = data.get8();\n count+=1;\n }\n }\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: Huffman table format error [count!=Lf]\");\n }\n\n for (i = 0; i < 4; i+=1) {\n for (j = 0; j < 2; j+=1) {\n if (this.tc[i][j] !== 0) {\n this.buildHuffTable(HuffTab[i][j], this.l[i][j], this.v[i][j]);\n }\n }\n }\n\n return 1;\n};\n\n\n\n//\tBuild_HuffTab()\n//\tParameter: t table ID\n//\t c table class ( 0 for DC, 1 for AC )\n//\t L[i] # of codewords which length is i\n//\t V[i][j] Huffman Value (length=i)\n//\tEffect:\n//\t build up HuffTab[t][c] using L and V.\njpeg.lossless.HuffmanTable.prototype.buildHuffTable = function(tab, L, V) {\n /*jslint bitwise: true */\n\n var currentTable, temp, k, i, j, n;\n temp = 256;\n k = 0;\n\n for (i = 0; i < 8; i+=1) { // i+1 is Code length\n for (j = 0; j < L[i]; j+=1) {\n for (n = 0; n < (temp >> (i + 1)); n+=1) {\n tab[k] = V[i][j] | ((i + 1) << 8);\n k+=1;\n }\n }\n }\n\n for (i = 1; k < 256; i+=1, k+=1) {\n tab[k] = i | jpeg.lossless.HuffmanTable.MSB;\n }\n\n currentTable = 1;\n k = 0;\n\n for (i = 8; i < 16; i+=1) { // i+1 is Code length\n for (j = 0; j < L[i]; j+=1) {\n for (n = 0; n < (temp >> (i - 7)); n+=1) {\n tab[(currentTable * 256) + k] = V[i][j] | ((i + 1) << 8);\n k+=1;\n }\n\n if (k >= 256) {\n if (k > 256) {\n throw new Error(\"ERROR: Huffman table error(1)!\");\n }\n\n k = 0;\n currentTable+=1;\n }\n }\n }\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.HuffmanTable;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/huffman-table.js\n// module id = 47\n// module chunks = 0","/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ****/\n\n/**\n * jpeg\n * @type {*|{}}\n */\nvar jpeg = jpeg || {};\n\n/**\n * jpeg.lossless\n * @type {*|{}}\n */\njpeg.lossless = jpeg.lossless || {};\n\n\njpeg.lossless.ComponentSpec = jpeg.lossless.ComponentSpec || ((typeof require !== 'undefined') ? require('./component-spec.js') : null);\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Decoder = jpeg.lossless.Decoder || ((typeof require !== 'undefined') ? require('./decoder.js') : null);\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Exports ***/\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/main.js\n// module id = 48\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || function () {\n this.precision = []; // Quantization precision 8 or 16\n this.tq = []; // 1: this table is presented\n this.quantTables = jpeg.lossless.Utils.createArray(4, 64); // Tables\n\n this.tq[0] = 0;\n this.tq[1] = 0;\n this.tq[2] = 0;\n this.tq[3] = 0;\n};\n\n\n\n/*** Static Methods ***/\n\njpeg.lossless.QuantizationTable.enhanceQuantizationTable = function(qtab, table) {\n /*jslint bitwise: true */\n\n var i;\n\n for (i = 0; i < 8; i+=1) {\n qtab[table[(0 * 8) + i]] *= 90;\n qtab[table[(4 * 8) + i]] *= 90;\n qtab[table[(2 * 8) + i]] *= 118;\n qtab[table[(6 * 8) + i]] *= 49;\n qtab[table[(5 * 8) + i]] *= 71;\n qtab[table[(1 * 8) + i]] *= 126;\n qtab[table[(7 * 8) + i]] *= 25;\n qtab[table[(3 * 8) + i]] *= 106;\n }\n\n for (i = 0; i < 8; i+=1) {\n qtab[table[0 + (8 * i)]] *= 90;\n qtab[table[4 + (8 * i)]] *= 90;\n qtab[table[2 + (8 * i)]] *= 118;\n qtab[table[6 + (8 * i)]] *= 49;\n qtab[table[5 + (8 * i)]] *= 71;\n qtab[table[1 + (8 * i)]] *= 126;\n qtab[table[7 + (8 * i)]] *= 25;\n qtab[table[3 + (8 * i)]] *= 106;\n }\n\n for (i = 0; i < 64; i+=1) {\n qtab[i] >>= 6;\n }\n};\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.QuantizationTable.prototype.read = function (data, table) {\n /*jslint bitwise: true */\n\n var count = 0, length, temp, t, i;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count+=1;\n t = temp & 0x0F;\n\n if (t > 3) {\n throw new Error(\"ERROR: Quantization table ID > 3\");\n }\n\n this.precision[t] = temp >> 4;\n\n if (this.precision[t] === 0) {\n this.precision[t] = 8;\n } else if (this.precision[t] === 1) {\n this.precision[t] = 16;\n } else {\n throw new Error(\"ERROR: Quantization table precision error\");\n }\n\n this.tq[t] = 1;\n\n if (this.precision[t] === 8) {\n for (i = 0; i < 64; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Quantization table format error\");\n }\n\n this.quantTables[t][i] = data.get8();\n count+=1;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);\n } else {\n for (i = 0; i < 64; i+=1) {\n if (count > length) {\n throw new Error(\"ERROR: Quantization table format error\");\n }\n\n this.quantTables[t][i] = data.get16();\n count += 2;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[t], table);\n }\n }\n\n if (count !== length) {\n throw new Error(\"ERROR: Quantization table error [count!=Lq]\");\n }\n\n return 1;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.QuantizationTable;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/quantization-table.js\n// module id = 49\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\n\n\n/*** Constructor ***/\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || function () {\n this.acTabSel = 0; // AC table selector\n this.dcTabSel = 0; // DC table selector\n this.scanCompSel = 0; // Scan component selector\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ScanComponent;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/scan-component.js\n// module id = 50\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.ScanComponent = jpeg.lossless.ScanComponent || ((typeof require !== 'undefined') ? require('./scan-component.js') : null);\n\n\n/*** Constructor ***/\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || function () {\n this.ah = 0;\n this.al = 0;\n this.numComp = 0; // Number of components in the scan\n this.selection = 0; // Start of spectral or predictor selection\n this.spectralEnd = 0; // End of spectral selection\n this.components = [];\n};\n\n\n/*** Prototype Methods ***/\n\njpeg.lossless.ScanHeader.prototype.read = function(data) {\n /*jslint bitwise: true */\n\n var count = 0, length, i, temp;\n\n length = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count+=1;\n\n for (i = 0; i < this.numComp; i+=1) {\n this.components[i] = new jpeg.lossless.ScanComponent();\n\n if (count > length) {\n throw new Error(\"ERROR: scan header format error\");\n }\n\n this.components[i].scanCompSel = data.get8();\n count+=1;\n\n temp = data.get8();\n count+=1;\n\n this.components[i].dcTabSel = (temp >> 4);\n this.components[i].acTabSel = (temp & 0x0F);\n }\n\n this.selection = data.get8();\n count+=1;\n\n this.spectralEnd = data.get8();\n count+=1;\n\n temp = data.get8();\n this.ah = (temp >> 4);\n this.al = (temp & 0x0F);\n count+=1;\n\n if (count !== length) {\n throw new Error(\"ERROR: scan header format error [count!=Ns]\");\n }\n\n return 1;\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.ScanHeader;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/scan-header.js\n// module id = 51\n// module chunks = 0","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/index.js\n// module id = 52\n// module chunks = 0","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/utils/strings.js\n// module id = 53\n// module chunks = 0","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/adler32.js\n// module id = 54\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/constants.js\n// module id = 55\n// module chunks = 0","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/crc32.js\n// module id = 56\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/zstream.js\n// module id = 57\n// module chunks = 0","import macro from 'vtk.js/Sources/macro';\nimport vtkPlane from 'vtk.js/Sources/Common/DataModel/Plane';\n\nconst INIT_BOUNDS = [\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // X\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Y\n Number.MAX_VALUE,\n -Number.MAX_VALUE, // Z\n];\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction isValid(bounds) {\n return (\n bounds[0] <= bounds[1] && bounds[2] <= bounds[3] && bounds[4] <= bounds[5]\n );\n}\n\nfunction getCenter(bounds) {\n return [\n 0.5 * (bounds[0] + bounds[1]),\n 0.5 * (bounds[2] + bounds[3]),\n 0.5 * (bounds[4] + bounds[5]),\n ];\n}\n\nfunction getLength(bounds, index) {\n return bounds[index * 2 + 1] - bounds[index * 2];\n}\n\nfunction getLengths(bounds) {\n return [getLength(bounds, 0), getLength(bounds, 1), getLength(bounds, 2)];\n}\n\nfunction getXRange(bounds) {\n return bounds.slice(0, 2);\n}\n\nfunction getYRange(bounds) {\n return bounds.slice(2, 4);\n}\n\nfunction getZRange(bounds) {\n return bounds.slice(4, 6);\n}\n\nfunction getMaxLength(bounds) {\n const l = getLengths(bounds);\n if (l[0] > l[1]) {\n if (l[0] > l[2]) {\n return l[0];\n }\n return l[2];\n } else if (l[1] > l[2]) {\n return l[1];\n }\n return l[2];\n}\n\nfunction getDiagonalLength(bounds) {\n if (isValid(bounds)) {\n const l = getLengths(bounds);\n return Math.sqrt(l[0] * l[0] + l[1] * l[1] + l[2] * l[2]);\n }\n return null;\n}\n\nfunction oppositeSign(a, b) {\n return (a <= 0 && b >= 0) || (a >= 0 && b <= 0);\n}\n\nfunction getCorners(bounds, corners) {\n let count = 0;\n for (let ix = 0; ix < 2; ix++) {\n for (let iy = 2; iy < 4; iy++) {\n for (let iz = 4; iz < 6; iz++) {\n corners[count] = [bounds[ix], bounds[iy], bounds[iz]];\n count++;\n }\n }\n }\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n isValid,\n getCenter,\n getLength,\n getLengths,\n getMaxLength,\n getDiagonalLength,\n getXRange,\n getYRange,\n getZRange,\n getCorners,\n INIT_BOUNDS,\n};\n\n// ----------------------------------------------------------------------------\n// vtkBoundingBox methods\n// ----------------------------------------------------------------------------\n\nfunction vtkBoundingBox(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkBoundingBox');\n\n publicAPI.clone = () => {\n const bounds = [].concat(model.bounds);\n /* eslint-disable no-use-before-define */\n return newInstance({ bounds });\n /* eslint-enable no-use-before-define */\n };\n\n publicAPI.equals = (other) => {\n const a = model.bounds;\n const b = other.getBounds();\n return (\n a[0] === b[0] &&\n a[1] === b[1] &&\n a[2] === b[2] &&\n a[3] === b[3] &&\n a[4] === b[4] &&\n a[5] === b[5]\n );\n };\n\n publicAPI.setMinPoint = (x, y, z) => {\n const [xMin, xMax, yMin, yMax, zMin, zMax] = model.bounds;\n model.bounds = [\n x,\n x > xMax ? x : xMax,\n y,\n y > yMax ? y : yMax,\n z,\n z > zMax ? z : zMax,\n ];\n\n return xMin !== x || yMin !== y || zMin !== z;\n };\n\n publicAPI.setMaxPoint = (x, y, z) => {\n const [xMin, xMax, yMin, yMax, zMin, zMax] = model.bounds;\n model.bounds = [\n x < xMin ? x : xMin,\n x,\n y < yMin ? y : yMin,\n y,\n z < zMin ? z : zMin,\n z,\n ];\n\n return xMax !== x || yMax !== y || zMax !== z;\n };\n\n publicAPI.addPoint = (...xyz) => {\n model.bounds = model.bounds.map((value, index) => {\n if (index % 2 === 0) {\n const idx = index / 2;\n return value < xyz[idx] ? value : xyz[idx];\n }\n const idx = (index - 1) / 2;\n return value > xyz[idx] ? value : xyz[idx];\n });\n };\n\n publicAPI.addBounds = (xMin, xMax, yMin, yMax, zMin, zMax) => {\n const [_xMin, _xMax, _yMin, _yMax, _zMin, _zMax] = model.bounds;\n model.bounds = [\n Math.min(xMin, _xMin),\n Math.max(xMax, _xMax),\n Math.min(yMin, _yMin),\n Math.max(yMax, _yMax),\n Math.min(zMin, _zMin),\n Math.max(zMax, _zMax),\n ];\n };\n\n publicAPI.addBox = (other) => {\n publicAPI.addBounds(...other.getBounds());\n };\n\n publicAPI.isValid = () => isValid(model.bounds);\n\n publicAPI.intersect = (bbox) => {\n if (!(publicAPI.isValid() && bbox.isValid())) {\n return false;\n }\n\n const newBounds = [0, 0, 0, 0, 0, 0];\n const bBounds = bbox.getBounds();\n let intersects;\n for (let i = 0; i < 3; i++) {\n intersects = false;\n if (\n bBounds[i * 2] >= model.bounds[i * 2] &&\n bBounds[i * 2] <= model.bounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2] = bBounds[i * 2];\n } else if (\n model.bounds[i * 2] >= bBounds[i * 2] &&\n model.bounds[i * 2] <= bBounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2] = model.bounds[i * 2];\n }\n\n if (\n bBounds[i * 2 + 1] >= model.bounds[i * 2] &&\n bBounds[i * 2 + 1] <= model.bounds[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2 + 1] = bbox.MaxPnt[i];\n } else if (\n model.bounds[i * 2 + 1] >= bbox.MinPnt[i * 2] &&\n model.bounds[i * 2 + 1] <= bbox.MaxPnt[i * 2 + 1]\n ) {\n intersects = true;\n newBounds[i * 2 + 1] = model.bounds[i * 2 + 1];\n }\n\n if (!intersects) {\n return false;\n }\n }\n\n // OK they did intersect - set the box to be the result\n model.bounds = newBounds;\n return true;\n };\n\n publicAPI.intersects = (bbox) => {\n if (!(publicAPI.isValid() && bbox.isValid())) {\n return false;\n }\n const bBounds = bbox.getBounds();\n /* eslint-disable no-continue */\n for (let i = 0; i < 3; i++) {\n if (\n bBounds[i * 2] >= model.bounds[i * 2] &&\n bBounds[i * 2] <= model.bounds[i * 2 + 1]\n ) {\n continue;\n } else if (\n model.bounds[i * 2] >= bBounds[i * 2] &&\n model.bounds[i * 2] <= bBounds[i * 2 + 1]\n ) {\n continue;\n }\n\n if (\n bBounds[i * 2 + 1] >= model.bounds[i * 2] &&\n bBounds[i * 2 + 1] <= model.bounds[i * 2 + 1]\n ) {\n continue;\n } else if (\n model.bounds[i * 2 + 1] >= bbox.MinPnt[i * 2] &&\n model.bounds[i * 2 + 1] <= bbox.MaxPnt[i * 2 + 1]\n ) {\n continue;\n }\n return false;\n }\n /* eslint-enable no-continue */\n\n return true;\n };\n\n publicAPI.intersectPlane = (origin, normal) => {\n // Index[0..2] represents the order of traversing the corners of a cube\n // in (x,y,z), (y,x,z) and (z,x,y) ordering, respectively\n const index = [\n [0, 1, 2, 3, 4, 5, 6, 7],\n [0, 1, 4, 5, 2, 3, 6, 7],\n [0, 2, 4, 6, 1, 3, 5, 7],\n ];\n\n // stores the signed distance to a plane\n const d = [0, 0, 0, 0, 0, 0, 0, 0];\n let idx = 0;\n for (let ix = 0; ix < 2; ix++) {\n for (let iy = 2; iy < 4; iy++) {\n for (let iz = 4; iz < 6; iz++) {\n const x = [model.bounds[ix], model.bounds[iy], model.bounds[iz]];\n d[idx++] = vtkPlane.evaluate(normal, origin, x);\n }\n }\n }\n\n let dir = 2;\n while (dir--) {\n // in each direction, we test if the vertices of two orthogonal faces\n // are on either side of the plane\n if (\n oppositeSign(d[index[dir][0]], d[index[dir][4]]) &&\n oppositeSign(d[index[dir][1]], d[index[dir][5]]) &&\n oppositeSign(d[index[dir][2]], d[index[dir][6]]) &&\n oppositeSign(d[index[dir][3]], d[index[dir][7]])\n ) {\n break;\n }\n }\n\n if (dir < 0) {\n return false;\n }\n\n const sign = Math.sign(normal[dir]);\n const size = Math.abs(\n (model.bounds[dir * 2 + 1] - model.bounds[dir * 2]) * normal[dir]\n );\n let t = sign > 0 ? 1 : 0;\n /* eslint-disable no-continue */\n for (let i = 0; i < 4; i++) {\n if (size === 0) {\n continue; // shouldn't happen\n }\n const ti = Math.abs(d[index[dir][i]]) / size;\n if (sign > 0 && ti < t) {\n t = ti;\n }\n\n if (sign < 0 && ti > t) {\n t = ti;\n }\n }\n /* eslint-enable no-continue */\n const bound =\n (1.0 - t) * model.bounds[dir * 2] + t * model.bounds[dir * 2 + 1];\n\n if (sign > 0) {\n model.bounds[dir * 2] = bound;\n } else {\n model.bounds[dir * 2 + 1] = bound;\n }\n\n return true;\n };\n\n publicAPI.containsPoint = (x, y, z) => {\n if (x < model.bounds[0] || x > model.bounds[1]) {\n return false;\n }\n\n if (y < model.bounds[2] || y > model.bounds[3]) {\n return false;\n }\n\n if (z < model.bounds[4] || z > model.bounds[5]) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.getMinPoint = () => [\n model.bounds[0],\n model.bounds[2],\n model.bounds[4],\n ];\n publicAPI.getMaxPoint = () => [\n model.bounds[1],\n model.bounds[3],\n model.bounds[5],\n ];\n publicAPI.getBound = (index) => model.bound[index];\n\n publicAPI.contains = (bbox) => {\n // if either box is not valid or they don't intersect\n if (!publicAPI.intersects(bbox)) {\n return false;\n }\n\n if (!publicAPI.containsPoint(...bbox.getMinPoint())) {\n return false;\n }\n\n if (!publicAPI.containsPoint(...bbox.getMaxPoint())) {\n return 0;\n }\n\n return true;\n };\n\n publicAPI.getCenter = () => getCenter(model.bounds);\n publicAPI.getLength = (index) => getLength(model.bounds, index);\n publicAPI.getLengths = () => getLengths(model.bounds);\n publicAPI.getMaxLength = () => getMaxLength(model.bounds);\n publicAPI.getDiagonalLength = () => getDiagonalLength(model.bounds);\n\n publicAPI.reset = () => publicAPI.setBounds([].concat(INIT_BOUNDS));\n\n publicAPI.inflate = (delta) => {\n model.bounds = model.bounds.map((value, index) => {\n if (index % 2 === 0) {\n return value - delta;\n }\n return value + delta;\n });\n };\n\n publicAPI.getCorners = () => {\n getCorners(model.bounds, model.corners);\n return model.corners;\n };\n\n publicAPI.scale = (sx, sy, sz) => {\n if (publicAPI.isValid()) {\n const newBounds = [].concat(model.bounds);\n if (sx >= 0.0) {\n newBounds[0] *= sx;\n newBounds[1] *= sx;\n } else {\n newBounds[0] = sx * model.bounds[1];\n newBounds[1] = sx * model.bounds[0];\n }\n\n if (sy >= 0.0) {\n newBounds[2] *= sy;\n newBounds[3] *= sy;\n } else {\n newBounds[2] = sy * model.bounds[3];\n newBounds[3] = sy * model.bounds[2];\n }\n\n if (sz >= 0.0) {\n newBounds[4] *= sz;\n newBounds[5] *= sz;\n } else {\n newBounds[4] = sz * model.bounds[5];\n newBounds[5] = sz * model.bounds[4];\n }\n\n model.bounds = newBounds;\n return true;\n }\n return false;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n type: 'vtkBoundingBox',\n bounds: [].concat(INIT_BOUNDS),\n corners: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['bounds']);\n vtkBoundingBox(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkBoundingBox');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/BoundingBox/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtk from 'vtk.js/Sources/vtk';\nimport vtkDataSetAttributes from 'vtk.js/Sources/Common/DataModel/DataSetAttributes';\nimport Constants from 'vtk.js/Sources/Common/DataModel/DataSet/Constants';\n\n// import vtkBoundingBox from '../BoundingBox';\n// import vtkMath from '../../Core/Math';\n//\n// function getBounds(dataset) {\n// if (dataset.bounds) {\n// return dataset.bounds;\n// }\n// if (dataset.type && dataset[dataset.type]) {\n// const ds = dataset[dataset.type];\n// if (ds.bounds) {\n// return ds.bounds;\n// }\n// if (ds.Points && ds.Points.bounds) {\n// return ds.Points.bounds;\n// }\n\n// if (ds.Points && ds.Points.values) {\n// const array = ds.Points.values;\n// const bbox = vtkBoundingBox.newInstance();\n// const size = array.length;\n// const delta = ds.Points.numberOfComponents ? ds.Points.numberOfComponents : 3;\n// for (let idx = 0; idx < size; idx += delta) {\n// bbox.addPoint(array[idx * delta], array[(idx * delta) + 1], array[(idx * delta) + 2]);\n// }\n// ds.Points.bounds = bbox.getBounds();\n// return ds.Points.bounds;\n// }\n// }\n// return vtkMath.createUninitializedBounds();\n// }\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst DATASET_FIELDS = ['pointData', 'cellData', 'fieldData'];\n\n// ----------------------------------------------------------------------------\n// vtkDataSet methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSet(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkDataSet');\n\n // Add dataset attributes\n DATASET_FIELDS.forEach((fieldName) => {\n if (!model[fieldName]) {\n model[fieldName] = vtkDataSetAttributes.newInstance();\n } else {\n model[fieldName] = vtk(model[fieldName]);\n }\n });\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // pointData: null,\n // cellData: null,\n // fieldData: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, DATASET_FIELDS);\n\n // Object specific methods\n vtkDataSet(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataSet');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSet/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataSet from 'vtk.js/Sources/Common/DataModel/DataSet';\nimport vtkStructuredData from 'vtk.js/Sources/Common/DataModel/StructuredData';\nimport { StructuredType } from 'vtk.js/Sources/Common/DataModel/StructuredData/Constants';\nimport { quat, vec3, mat3, mat4 } from 'gl-matrix';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkImageData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageData(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageData');\n\n publicAPI.setExtent = (...inExtent) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (!inExtent || inExtent.length !== 6) {\n return;\n }\n\n let changeDetected = false;\n model.extent.forEach((item, index) => {\n if (item !== inExtent[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected) {\n model.extent = [].concat(inExtent);\n model.dataDescription = vtkStructuredData.getDataDescriptionFromExtent(\n model.extent\n );\n publicAPI.modified();\n }\n };\n\n publicAPI.setDimensions = (...dims) => {\n let i;\n let j;\n let k;\n\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return;\n }\n\n if (dims.length === 1) {\n const array = dims[0];\n i = array[0];\n j = array[1];\n k = array[2];\n } else if (dims.length === 3) {\n i = dims[0];\n j = dims[1];\n k = dims[2];\n } else {\n vtkErrorMacro('Bad dimension specification');\n return;\n }\n\n publicAPI.setExtent(0, i - 1, 0, j - 1, 0, k - 1);\n };\n\n publicAPI.getDimensions = () => [\n model.extent[1] - model.extent[0] + 1,\n model.extent[3] - model.extent[2] + 1,\n model.extent[5] - model.extent[4] + 1,\n ];\n\n publicAPI.getNumberOfCells = () => {\n const dims = publicAPI.getDimensions();\n let nCells = 1;\n\n for (let i = 0; i < 3; i++) {\n if (dims[i] === 0) {\n return 0;\n }\n if (dims[i] > 1) {\n nCells *= dims[i] - 1;\n }\n }\n\n return nCells;\n };\n\n publicAPI.getNumberOfPoints = () => {\n const dims = publicAPI.getDimensions();\n return dims[0] * dims[1] * dims[2];\n };\n\n publicAPI.getPoint = (index) => {\n const dims = publicAPI.getDimensions();\n const ijk = vec3.fromValues(0, 0, 0);\n const coords = [0, 0, 0];\n\n if (dims[0] === 0 || dims[1] === 0 || dims[2] === 0) {\n vtkErrorMacro('Requesting a point from an empty image.');\n return null;\n }\n\n switch (model.dataDescription) {\n case StructuredType.EMPTY:\n return null;\n\n case StructuredType.SINGLE_POINT:\n break;\n\n case StructuredType.X_LINE:\n ijk[0] = index;\n break;\n\n case StructuredType.Y_LINE:\n ijk[1] = index;\n break;\n\n case StructuredType.Z_LINE:\n ijk[2] = index;\n break;\n\n case StructuredType.XY_PLANE:\n ijk[0] = index % dims[0];\n ijk[1] = index / dims[0];\n break;\n\n case StructuredType.YZ_PLANE:\n ijk[1] = index % dims[1];\n ijk[2] = index / dims[1];\n break;\n\n case StructuredType.XZ_PLANE:\n ijk[0] = index % dims[0];\n ijk[2] = index / dims[0];\n break;\n\n case StructuredType.XYZ_GRID:\n ijk[0] = index % dims[0];\n ijk[1] = (index / dims[0]) % dims[1];\n ijk[2] = index / (dims[0] * dims[1]);\n break;\n\n default:\n vtkErrorMacro('Invalid dataDescription');\n break;\n }\n\n const vout = vec3.create();\n publicAPI.indexToWorldVec3(ijk, vout);\n vec3.copy(coords, vout);\n return coords;\n };\n\n // vtkCell *GetCell(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCell(vtkIdType cellId, vtkGenericCell *cell) VTK_OVERRIDE;\n // void GetCellBounds(vtkIdType cellId, double bounds[6]) VTK_OVERRIDE;\n // virtual vtkIdType FindPoint(double x, double y, double z)\n // {\n // return this->vtkDataSet::FindPoint(x, y, z);\n // }\n // vtkIdType FindPoint(double x[3]) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkIdType cellId, double tol2,\n // int& subId, double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkIdType FindCell(\n // double x[3], vtkCell *cell, vtkGenericCell *gencell,\n // vtkIdType cellId, double tol2, int& subId,\n // double pcoords[3], double *weights) VTK_OVERRIDE;\n // vtkCell *FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId,\n // double tol2, int& subId, double pcoords[3],\n // double *weights) VTK_OVERRIDE;\n // int GetCellType(vtkIdType cellId) VTK_OVERRIDE;\n // void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) VTK_OVERRIDE\n // {vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,\n // this->GetDimensions());}\n // void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) VTK_OVERRIDE\n // {vtkStructuredData::GetPointCells(ptId,cellIds,this->GetDimensions());}\n // void ComputeBounds() VTK_OVERRIDE;\n // int GetMaxCellSize() VTK_OVERRIDE {return 8;}; //voxel is the largest\n\n publicAPI.getBounds = () => publicAPI.extentToBounds(model.extent);\n\n publicAPI.extentToBounds = (ex) => {\n // prettier-ignore\n const corners = [\n ex[0], ex[2], ex[4],\n ex[1], ex[2], ex[4],\n ex[0], ex[3], ex[4],\n ex[1], ex[3], ex[4],\n ex[0], ex[2], ex[5],\n ex[1], ex[2], ex[5],\n ex[0], ex[3], ex[5],\n ex[1], ex[3], ex[5]];\n\n const idx = vec3.fromValues(corners[0], corners[1], corners[2]);\n const vout = vec3.create();\n publicAPI.indexToWorldVec3(idx, vout);\n const bounds = [vout[0], vout[0], vout[1], vout[1], vout[2], vout[2]];\n for (let i = 3; i < 24; i += 3) {\n vec3.set(idx, corners[i], corners[i + 1], corners[i + 2]);\n publicAPI.indexToWorldVec3(idx, vout);\n if (vout[0] < bounds[0]) {\n bounds[0] = vout[0];\n }\n if (vout[1] < bounds[2]) {\n bounds[2] = vout[1];\n }\n if (vout[2] < bounds[4]) {\n bounds[4] = vout[2];\n }\n if (vout[0] > bounds[1]) {\n bounds[1] = vout[0];\n }\n if (vout[1] > bounds[3]) {\n bounds[3] = vout[1];\n }\n if (vout[2] > bounds[5]) {\n bounds[5] = vout[2];\n }\n }\n\n return bounds;\n };\n\n publicAPI.computeTransforms = () => {\n const rotq = quat.create();\n quat.fromMat3(rotq, model.direction);\n const trans = vec3.fromValues(\n model.origin[0],\n model.origin[1],\n model.origin[2]\n );\n const scale = vec3.fromValues(\n model.spacing[0],\n model.spacing[1],\n model.spacing[2]\n );\n mat4.fromRotationTranslationScale(model.indexToWorld, rotq, trans, scale);\n mat4.invert(model.worldToIndex, model.indexToWorld);\n };\n\n //\n // The direction matrix is a 3x3 basis for the I, J, K axes\n // of the image. The rows of the matrix correspond to the\n // axes directions in world coordinates. Direction must\n // form an orthonormal basis, results are undefined if\n // it is not.\n //\n publicAPI.setDirection = (...args) => {\n if (model.deleted) {\n vtkErrorMacro('instance deleted - cannot call any method');\n return false;\n }\n\n let array = args;\n // allow an array passed as a single arg.\n if (array.length === 1 && Array.isArray(array[0])) {\n array = array[0];\n }\n\n if (array.length !== 9) {\n throw new RangeError('Invalid number of values for array setter');\n }\n let changeDetected = false;\n model.direction.forEach((item, index) => {\n if (item !== array[index]) {\n if (changeDetected) {\n return;\n }\n changeDetected = true;\n }\n });\n\n if (changeDetected) {\n for (let i = 0; i < 9; ++i) {\n model.direction[i] = array[i];\n }\n publicAPI.modified();\n }\n return true;\n };\n\n // this is the fast version, requires vec3 arguments\n publicAPI.indexToWorldVec3 = (vin, vout) => {\n vec3.transformMat4(vout, vin, model.indexToWorld);\n };\n\n // slow version for generic arrays\n publicAPI.indexToWorld = (ain, aout) => {\n const vin = vec3.fromValues(ain[0], ain[1], ain[2]);\n const vout = vec3.create();\n vec3.transformMat4(vout, vin, model.indexToWorld);\n vec3.copy(aout, vout);\n };\n\n // this is the fast version, requires vec3 arguments\n publicAPI.worldToIndexVec3 = (vin, vout) => {\n vec3.transformMat4(vout, vin, model.worldToIndex);\n };\n\n // slow version for generic arrays\n publicAPI.worldToIndex = (ain, aout) => {\n const vin = vec3.fromValues(ain[0], ain[1], ain[2]);\n const vout = vec3.create();\n vec3.transformMat4(vout, vin, model.worldToIndex);\n vec3.copy(aout, vout);\n };\n\n // Make sure the transform is correct\n publicAPI.onModified(publicAPI.computeTransforms);\n publicAPI.computeTransforms();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n direction: null, // a mat3\n indexToWorld: null, // a mat4\n worldToIndex: null, // a mat4\n spacing: [1.0, 1.0, 1.0],\n origin: [0.0, 0.0, 0.0],\n extent: [0, -1, 0, -1, 0, -1],\n dataDescription: StructuredType.EMPTY,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkDataSet.extend(publicAPI, model, initialValues);\n\n if (!model.direction) {\n model.direction = mat3.create();\n } else if (Array.isArray(model.direction)) {\n const dvals = model.direction.slice(0);\n model.direction = mat3.create();\n for (let i = 0; i < 9; ++i) {\n model.direction[i] = dvals[i];\n }\n }\n\n model.indexToWorld = mat4.create();\n model.worldToIndex = mat4.create();\n\n // Set/Get methods\n macro.get(publicAPI, model, ['direction', 'indexToWorld', 'worldToIndex']);\n macro.setGetArray(publicAPI, model, ['origin', 'spacing'], 3);\n macro.getArray(publicAPI, model, ['extent'], 6);\n\n // Object specific methods\n vtkImageData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageData');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/ImageData/index.js","import vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport macro from 'vtk.js/Sources/macro';\n\nconst PLANE_TOLERANCE = 1.0e-6;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nfunction evaluate(normal, origin, x) {\n return (\n normal[0] * (x[0] - origin[0]) +\n normal[1] * (x[1] - origin[1]) +\n normal[2] * (x[2] - origin[2])\n );\n}\n\nfunction distanceToPlane(x, origin, normal) {\n const distance =\n normal[0] * (x[0] - origin[0]) +\n normal[1] * (x[1] - origin[1]) +\n normal[2] * (x[2] - origin[2]);\n\n return Math.abs(distance);\n}\n\nfunction projectPoint(x, origin, normal, xproj) {\n const xo = [];\n vtkMath.subtract(x, origin, xo);\n\n const t = vtkMath.dot(normal, xo);\n\n xproj[0] = x[0] - t * normal[0];\n xproj[1] = x[1] - t * normal[1];\n xproj[2] = x[2] - t * normal[2];\n}\n\nfunction projectVector(v, normal, vproj) {\n const t = vtkMath.dot(v, normal);\n\n let n2 = vtkMath.dot(normal, normal);\n if (n2 === 0) {\n n2 = 1.0;\n }\n\n vproj[0] = v[0] - t * normal[0] / n2;\n vproj[1] = v[1] - t * normal[1] / n2;\n vproj[2] = v[2] - t * normal[2] / n2;\n}\n\nfunction generalizedProjectPoint(x, origin, normal, xproj) {\n const xo = [];\n vtkMath.subtract(x, origin, xo);\n\n const t = vtkMath.dot(normal, xo);\n const n2 = vtkMath.dot(normal, normal);\n\n if (n2 !== 0) {\n xproj[0] = x[0] - t * normal[0] / n2;\n xproj[1] = x[1] - t * normal[1] / n2;\n xproj[2] = x[2] - t * normal[2] / n2;\n } else {\n xproj[0] = x[0];\n xproj[1] = x[1];\n xproj[2] = x[2];\n }\n}\n\nfunction intersectWithLine(p1, p2, origin, normal) {\n const outObj = { intersection: false, t: Number.MAX_VALUE, x: [] };\n\n const p21 = [];\n // Compute line vector\n vtkMath.subtract(p2, p1, p21);\n\n // Compute denominator. If ~0, line and plane are parallel.\n const num = vtkMath.dot(normal, origin) - vtkMath.dot(normal, p1);\n const den = vtkMath.dot(normal, p21);\n\n // If denominator with respect to numerator is \"zero\", then the line and\n // plane are considered parallel.\n let fabsden;\n let fabstolerance;\n\n // Trying to avoid an expensive call to fabs()\n if (den < 0.0) {\n fabsden = -den;\n } else {\n fabsden = den;\n }\n if (num < 0.0) {\n fabstolerance = -num * PLANE_TOLERANCE;\n } else {\n fabstolerance = num * PLANE_TOLERANCE;\n }\n if (fabsden <= fabstolerance) {\n return outObj;\n }\n\n // Valid intersection\n outObj.t = num / den;\n\n outObj.x[0] = p1[0] + outObj.t * p21[0];\n outObj.x[1] = p1[1] + outObj.t * p21[1];\n outObj.x[2] = p1[2] + outObj.t * p21[2];\n\n outObj.intersection = outObj.t >= 0.0 && outObj.t <= 1.0;\n return outObj;\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nexport const STATIC = {\n evaluate,\n distanceToPlane,\n projectPoint,\n projectVector,\n generalizedProjectPoint,\n intersectWithLine,\n};\n\n// ----------------------------------------------------------------------------\n// vtkPlane methods\n// ----------------------------------------------------------------------------\n\nexport function vtkPlane(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkPlane');\n\n publicAPI.distanceToPlane = (x) =>\n distanceToPlane(x, model.origin, model.normal);\n\n publicAPI.projectPoint = (x, xproj) => {\n projectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.projectVector = (v, vproj) => {\n projectVector(v, model.normal, vproj);\n };\n\n publicAPI.push = (distance) => {\n if (distance === 0.0) {\n return;\n }\n for (let i = 0; i < 3; i++) {\n model.origin[i] += distance * model.normal[i];\n }\n };\n\n publicAPI.generalizedProjectPoint = (x, xproj) => {\n generalizedProjectPoint(x, model.origin, model.normal, xproj);\n };\n\n publicAPI.evaluateFunction = (...x) => {\n let point = [].concat(x);\n if (Array.isArray(x[0])) {\n point = x[0];\n }\n\n if (point.length !== 3) {\n return Number.MAX_VALUE;\n }\n\n return (\n model.normal[0] * (point[0] - model.origin[0]) +\n model.normal[1] * (point[1] - model.origin[1]) +\n model.normal[2] * (point[2] - model.origin[2])\n );\n };\n\n publicAPI.evaluateGradient = (xyz) => {\n const retVal = [model.normal[0], model.normal[1], model.normal[2]];\n return retVal;\n };\n\n publicAPI.intersectWithLine = (p1, p2) =>\n intersectWithLine(p1, p2, model.origin, model.normal);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n normal: [0.0, 0.0, 1.0],\n origin: [0.0, 0.0, 0.0],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.setGetArray(publicAPI, model, ['normal', 'origin'], 3);\n\n vtkPlane(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkPlane');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/Plane/index.js","export const StructuredType = {\n UNCHANGED: 0,\n SINGLE_POINT: 1,\n X_LINE: 2,\n Y_LINE: 3,\n Z_LINE: 4,\n XY_PLANE: 5,\n YZ_PLANE: 6,\n XZ_PLANE: 7,\n XYZ_GRID: 8,\n EMPTY: 9,\n};\n\nexport default {\n StructuredType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/StructuredData/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkInteractorStyle from 'vtk.js/Sources/Rendering/Core/InteractorStyle';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport {\n Device,\n Input,\n} from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants';\n\nconst { States } = vtkInteractorStyle;\n\n/* eslint-disable no-lonely-if */\n\n// ----------------------------------------------------------------------------\n// vtkInteractorStyleTrackballCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorStyleTrackballCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorStyleTrackballCamera');\n\n // Public API methods\n publicAPI.handleAnimation = () => {\n const pos = model.interactor.getAnimationEventPosition(\n model.interactor.getPointerIndex()\n );\n\n switch (model.state) {\n case States.IS_ROTATE:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.rotate();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_PAN:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.pan();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_DOLLY:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.dolly();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_SPIN:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.spin();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n default:\n break;\n }\n };\n\n publicAPI.handleButton3D = (arg) => {\n const ed = arg.calldata;\n publicAPI.findPokedRenderer(0, 0);\n if (model.currentRenderer === null) {\n return;\n }\n\n if (\n ed &&\n ed.pressed &&\n ed.device === Device.RightController &&\n ed.input === Input.TrackPad\n ) {\n publicAPI.startCameraPose();\n publicAPI.setAnimationStateOn();\n return;\n }\n if (\n ed &&\n !ed.pressed &&\n ed.device === Device.RightController &&\n ed.input === Input.TrackPad &&\n model.state === States.IS_CAMERA_POSE\n ) {\n publicAPI.endCameraPose();\n publicAPI.setAnimationStateOff();\n // return;\n }\n };\n\n publicAPI.handleMove3D = (arg) => {\n const ed = arg.calldata;\n switch (model.state) {\n case States.IS_CAMERA_POSE:\n publicAPI.updateCameraPose(ed);\n break;\n default:\n }\n };\n\n publicAPI.updateCameraPose = (ed) => {\n // move the world in the direction of the\n // controller\n const camera = model.currentRenderer.getActiveCamera();\n const oldTrans = camera.getPhysicalTranslation();\n\n // look at the y axis to determine how fast / what direction to move\n const speed = ed.gamepad.axes[1];\n\n // 0.05 meters / frame movement\n const pscale = speed * 0.05 / camera.getPhysicalScale();\n\n // convert orientation to world coordinate direction\n const dir = camera.physicalOrientationToWorldDirection(ed.orientation);\n\n camera.setPhysicalTranslation(\n oldTrans[0] + dir[0] * pscale,\n oldTrans[1] + dir[1] * pscale,\n oldTrans[2] + dir[2] * pscale\n );\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handleLeftButtonPress = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer === null) {\n return;\n }\n\n publicAPI.grabFocus(model.eventCallbackCommand);\n if (model.interactor.getShiftKey()) {\n if (model.interactor.getControlKey() || model.interactor.getAltKey()) {\n publicAPI.startDolly();\n publicAPI.setAnimationStateOn();\n } else {\n publicAPI.startPan();\n publicAPI.setAnimationStateOn();\n }\n } else {\n if (model.interactor.getControlKey() || model.interactor.getAltKey()) {\n publicAPI.startSpin();\n publicAPI.setAnimationStateOn();\n } else {\n publicAPI.startRotate();\n publicAPI.setAnimationStateOn();\n }\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.handleLeftButtonRelease = () => {\n switch (model.state) {\n case States.IS_DOLLY:\n publicAPI.endDolly();\n publicAPI.setAnimationStateOff();\n break;\n\n case States.IS_PAN:\n publicAPI.endPan();\n publicAPI.setAnimationStateOff();\n break;\n\n case States.IS_SPIN:\n publicAPI.endSpin();\n publicAPI.setAnimationStateOff();\n break;\n\n case States.IS_ROTATE:\n publicAPI.endRotate();\n publicAPI.setAnimationStateOff();\n break;\n\n default:\n break;\n }\n\n if (model.interactor) {\n publicAPI.releaseFocus();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handlePinch = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer === null) {\n return;\n }\n\n const camera = model.currentRenderer.getActiveCamera();\n\n const dyf = model.interactor.getScale() / model.interactor.getLastScale();\n if (camera.getParallelProjection()) {\n camera.setParallelScale(camera.getParallelScale() / dyf);\n } else {\n camera.dolly(dyf);\n if (model.autoAdjustCameraClippingRange) {\n model.currentRenderer.resetCameraClippingRange();\n }\n }\n\n if (model.interactor.getLightFollowCamera()) {\n model.currentRenderer.updateLightsGeometryToFollowCamera();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.handlePan = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer === null) {\n return;\n }\n\n const camera = model.currentRenderer.getActiveCamera();\n\n const rwi = model.interactor;\n\n // Calculate the focal depth since we'll be using it a lot\n let viewFocus = camera.getFocalPoint();\n\n viewFocus = publicAPI.computeWorldToDisplay(\n viewFocus[0],\n viewFocus[1],\n viewFocus[2]\n );\n const focalDepth = viewFocus[2];\n\n let newPickPoint = publicAPI.computeDisplayToWorld(\n pos.x,\n pos.y,\n focalDepth\n );\n\n const trans = rwi.getTranslation();\n const lastTrans = rwi.getLastTranslation();\n newPickPoint = publicAPI.computeDisplayToWorld(\n viewFocus[0] + trans[0] - lastTrans[0],\n viewFocus[1] + trans[1] - lastTrans[1],\n focalDepth\n );\n\n // Has to recalc old mouse point since the viewport has moved,\n // so can't move it outside the loop\n const oldPickPoint = publicAPI.computeDisplayToWorld(\n viewFocus[0],\n viewFocus[1],\n focalDepth\n );\n\n // Camera motion is reversed\n const motionVector = [];\n motionVector[0] = oldPickPoint[0] - newPickPoint[0];\n motionVector[1] = oldPickPoint[1] - newPickPoint[1];\n motionVector[2] = oldPickPoint[2] - newPickPoint[2];\n\n viewFocus = camera.getFocalPoint();\n const viewPoint = camera.getPosition();\n camera.setFocalPoint(\n motionVector[0] + viewFocus[0],\n motionVector[1] + viewFocus[1],\n motionVector[2] + viewFocus[2]\n );\n\n camera.setPosition(\n motionVector[0] + viewPoint[0],\n motionVector[1] + viewPoint[1],\n motionVector[2] + viewPoint[2]\n );\n\n if (model.interactor.getLightFollowCamera()) {\n model.currentRenderer.updateLightsGeometryToFollowCamera();\n }\n\n camera.orthogonalizeViewUp();\n };\n\n publicAPI.handleRotate = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer === null) {\n return;\n }\n\n const camera = model.currentRenderer.getActiveCamera();\n\n camera.roll(\n model.interactor.getRotation() - model.interactor.getLastRotation()\n );\n\n camera.orthogonalizeViewUp();\n };\n\n //--------------------------------------------------------------------------\n publicAPI.rotate = () => {\n if (model.currentRenderer === null) {\n return;\n }\n\n const rwi = model.interactor;\n\n const lastPtr = model.interactor.getPointerIndex();\n const pos = model.interactor.getAnimationEventPosition(lastPtr);\n const lastPos = model.interactor.getLastAnimationEventPosition(lastPtr);\n\n const dx = pos.x - lastPos.x;\n const dy = pos.y - lastPos.y;\n\n const size = rwi.getView().getViewportSize(model.currentRenderer);\n\n let deltaElevation = -0.1;\n let deltaAzimuth = -0.1;\n if (size[0] && size[1]) {\n deltaElevation = -20.0 / size[1];\n deltaAzimuth = -20.0 / size[0];\n }\n\n const rxf = dx * deltaAzimuth * model.motionFactor;\n const ryf = dy * deltaElevation * model.motionFactor;\n\n const camera = model.currentRenderer.getActiveCamera();\n if (!Number.isNaN(rxf) && !Number.isNaN(ryf)) {\n camera.azimuth(rxf);\n camera.elevation(ryf);\n camera.orthogonalizeViewUp();\n }\n\n if (model.autoAdjustCameraClippingRange) {\n model.currentRenderer.resetCameraClippingRange();\n }\n\n if (rwi.getLightFollowCamera()) {\n model.currentRenderer.updateLightsGeometryToFollowCamera();\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.spin = () => {\n if (model.currentRenderer === null) {\n return;\n }\n\n const rwi = model.interactor;\n\n const lastPtr = model.interactor.getPointerIndex();\n const pos = model.interactor.getAnimationEventPosition(lastPtr);\n const lastPos = model.interactor.getLastAnimationEventPosition(lastPtr);\n\n const camera = model.currentRenderer.getActiveCamera();\n const center = rwi.getView().getViewportCenter(model.currentRenderer);\n\n const oldAngle = vtkMath.degreesFromRadians(\n Math.atan2(lastPos.y - center[1], lastPos.x - center[0])\n );\n const newAngle =\n vtkMath.degreesFromRadians(\n Math.atan2(pos.y - center[1], pos.x - center[0])\n ) - oldAngle;\n\n if (!Number.isNaN(newAngle)) {\n camera.roll(newAngle);\n camera.orthogonalizeViewUp();\n }\n };\n\n publicAPI.pan = () => {\n if (model.currentRenderer === null) {\n return;\n }\n\n const rwi = model.interactor;\n\n const lastPtr = model.interactor.getPointerIndex();\n const pos = model.interactor.getAnimationEventPosition(lastPtr);\n const lastPos = model.interactor.getLastAnimationEventPosition(lastPtr);\n\n const camera = model.currentRenderer.getActiveCamera();\n\n // Calculate the focal depth since we'll be using it a lot\n let viewFocus = camera.getFocalPoint();\n viewFocus = publicAPI.computeWorldToDisplay(\n viewFocus[0],\n viewFocus[1],\n viewFocus[2]\n );\n const focalDepth = viewFocus[2];\n\n const newPickPoint = publicAPI.computeDisplayToWorld(\n pos.x,\n pos.y,\n focalDepth\n );\n\n // Has to recalc old mouse point since the viewport has moved,\n // so can't move it outside the loop\n const oldPickPoint = publicAPI.computeDisplayToWorld(\n lastPos.x,\n lastPos.y,\n focalDepth\n );\n\n // Camera motion is reversed\n const motionVector = [];\n motionVector[0] = oldPickPoint[0] - newPickPoint[0];\n motionVector[1] = oldPickPoint[1] - newPickPoint[1];\n motionVector[2] = oldPickPoint[2] - newPickPoint[2];\n\n viewFocus = camera.getFocalPoint();\n const viewPoint = camera.getPosition();\n camera.setFocalPoint(\n motionVector[0] + viewFocus[0],\n motionVector[1] + viewFocus[1],\n motionVector[2] + viewFocus[2]\n );\n\n camera.setPosition(\n motionVector[0] + viewPoint[0],\n motionVector[1] + viewPoint[1],\n motionVector[2] + viewPoint[2]\n );\n\n if (rwi.getLightFollowCamera()) {\n model.currentRenderer.updateLightsGeometryToFollowCamera();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.dolly = () => {\n if (model.currentRenderer === null) {\n return;\n }\n\n const lastPtr = model.interactor.getPointerIndex();\n const pos = model.interactor.getAnimationEventPosition(lastPtr);\n const lastPos = model.interactor.getLastAnimationEventPosition(lastPtr);\n\n const dy = pos.y - lastPos.y;\n const rwi = model.interactor;\n const center = rwi.getView().getViewportCenter(model.currentRenderer);\n const dyf = model.motionFactor * dy / center[1];\n\n publicAPI.dollyByFactor(1.1 ** dyf);\n };\n\n //----------------------------------------------------------------------------\n publicAPI.dollyByFactor = (factor) => {\n if (model.currentRenderer === null || Number.isNaN(factor)) {\n return;\n }\n\n const rwi = model.interactor;\n\n const camera = model.currentRenderer.getActiveCamera();\n if (camera.getParallelProjection()) {\n camera.setParallelScale(camera.getParallelScale() / factor);\n } else {\n camera.dolly(factor);\n if (model.autoAdjustCameraClippingRange) {\n model.currentRenderer.resetCameraClippingRange();\n }\n }\n\n if (rwi.getLightFollowCamera()) {\n model.currentRenderer.updateLightsGeometryToFollowCamera();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n motionFactor: 10.0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkInteractorStyle.extend(publicAPI, model, initialValues);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['motionFactor']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkInteractorStyleTrackballCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkInteractorStyleTrackballCamera'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkAbstractMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkAbstractMapper(publicAPI, model) {\n publicAPI.update = () => {\n publicAPI.getInputData();\n };\n\n publicAPI.addClippingPlane = (plane) => {\n if (plane.getClassName() !== 'vtkPlane') {\n return;\n }\n model.clippingPlanes.push(plane);\n };\n\n publicAPI.getNumberOfClippingPlanes = () => model.clippingPlanes.length;\n\n publicAPI.removeAllClippingPlanes = () => {\n model.clippingPlanes.length = 0;\n };\n\n publicAPI.removeClippingPlane = (i) => {\n if (i < 0 || i >= 6) {\n return;\n }\n model.clippingPlanes.splice(i, 1);\n };\n\n publicAPI.getClippingPlanes = () => model.clippingPlanes;\n\n publicAPI.setClippingPlanes = (planes) => {\n if (!planes) {\n return;\n }\n if (!Array.isArray(planes)) {\n publicAPI.addClippingPlane(planes);\n } else {\n const nbPlanes = planes.length;\n for (let i = 0; i < nbPlanes && i < 6; i++) {\n publicAPI.addClippingPlane(planes[i]);\n }\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n clippingPlanes: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n macro.algo(publicAPI, model, 1, 0);\n\n if (!model.clippingPlanes) {\n model.clippingPlanes = [];\n }\n\n vtkAbstractMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\nexport default { extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/AbstractMapper/index.js","export const SlicingMode = {\n NONE: -1,\n X: 0,\n Y: 1,\n Z: 2,\n};\n\nexport default {\n SlicingMode,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageMapper/Constants.js","export const States = {\n IS_START: 0,\n IS_NONE: 0,\n\n IS_ROTATE: 1,\n IS_PAN: 2,\n IS_SPIN: 3,\n IS_DOLLY: 4,\n IS_ZOOM: 5,\n IS_USCALE: 6,\n IS_TIMER: 7,\n IS_FORWARDFLY: 8,\n IS_REVERSEFLY: 9,\n IS_TWO_POINTER: 10,\n IS_CAMERA_POSE: 11,\n\n IS_ANIM_OFF: 0,\n IS_ANIM_ON: 1,\n\n IS_WINDOW_LEVEL: 1024,\n IS_PICK: 1025,\n IS_SLICE: 1026,\n};\n\nexport default {\n States,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorStyle/Constants.js","export const ColorMode = {\n DEFAULT: 0,\n MAP_SCALARS: 1,\n DIRECT_SCALARS: 2,\n};\n\nexport const ScalarMode = {\n DEFAULT: 0,\n USE_POINT_DATA: 1,\n USE_CELL_DATA: 2,\n USE_POINT_FIELD_DATA: 3,\n USE_CELL_FIELD_DATA: 4,\n USE_FIELD_DATA: 5,\n};\n\nexport const GetArray = {\n BY_ID: 0,\n BY_NAME: 1,\n};\n\nexport default {\n ColorMode,\n GetArray,\n ScalarMode,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/Core/Property/Constants';\n\nconst { Representation, Interpolation } = Constants;\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkProperty::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkProperty methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProperty(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProperty');\n\n publicAPI.setColor = (r, g, b) => {\n if (model.color[0] !== r || model.color[1] !== g || model.color[2] !== b) {\n model.color[0] = r;\n model.color[1] = g;\n model.color[2] = b;\n publicAPI.modified();\n }\n\n publicAPI.setDiffuseColor(model.color);\n publicAPI.setAmbientColor(model.color);\n publicAPI.setSpecularColor(model.color);\n };\n\n publicAPI.computeCompositeColor = notImplemented('ComputeCompositeColor');\n publicAPI.getColor = () => {\n // Inline computeCompositeColor\n let norm = 0.0;\n if (model.ambient + model.diffuse + model.specular > 0) {\n norm = 1.0 / (model.ambient + model.diffuse + model.specular);\n }\n\n for (let i = 0; i < 3; i++) {\n model.color[i] =\n norm *\n (model.ambient * model.ambientColor[i] +\n model.diffuse * model.diffuseColor[i] +\n model.specular * model.specularColor[i]);\n }\n\n return [].concat(model.color);\n };\n\n publicAPI.addShaderVariable = notImplemented('AddShaderVariable');\n\n publicAPI.setInterpolationToFlat = () =>\n publicAPI.setInterpolation(Interpolation.FLAT);\n publicAPI.setInterpolationToGouraud = () =>\n publicAPI.setInterpolation(Interpolation.GOURAUD);\n publicAPI.setInterpolationToPhong = () =>\n publicAPI.setInterpolation(Interpolation.PHONG);\n publicAPI.getInterpolationAsString = () =>\n macro.enumToString(Interpolation, model.interpolation);\n\n publicAPI.setRepresentationToWireframe = () =>\n publicAPI.setRepresentation(Representation.WIREFRAME);\n publicAPI.setRepresentationToSurface = () =>\n publicAPI.setRepresentation(Representation.SURFACE);\n publicAPI.setRepresentationToPoints = () =>\n publicAPI.setRepresentation(Representation.POINTS);\n publicAPI.getRepresentationAsString = () =>\n macro.enumToString(Representation, model.representation);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n color: [1, 1, 1],\n ambientColor: [1, 1, 1],\n diffuseColor: [1, 1, 1],\n specularColor: [1, 1, 1],\n edgeColor: [0, 0, 0],\n\n ambient: 0,\n diffuse: 1,\n specular: 0,\n specularPower: 1,\n opacity: 1,\n interpolation: Interpolation.GOURAUD,\n representation: Representation.SURFACE,\n edgeVisibility: false,\n backfaceCulling: false,\n frontfaceCulling: false,\n pointSize: 1,\n lineWidth: 1,\n lighting: true,\n\n shading: false,\n materialName: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.setGet(publicAPI, model, [\n 'lighting',\n 'interpolation',\n 'ambient',\n 'diffuse',\n 'specular',\n 'specularPower',\n 'opacity',\n 'edgeVisibility',\n 'lineWidth',\n 'pointSize',\n 'backfaceCulling',\n 'frontfaceCulling',\n 'representation',\n ]);\n macro.setGetArray(\n publicAPI,\n model,\n ['ambientColor', 'specularColor', 'diffuseColor', 'edgeColor'],\n 3\n );\n\n // Object methods\n vtkProperty(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProperty');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Property/index.js","export const Device = {\n Unknown: 0,\n LeftController: 1,\n RightController: 2,\n};\n\nexport const Input = {\n Unknown: 0,\n Trigger: 1,\n TrackPad: 2,\n Grip: 3,\n ApplicationMenu: 4,\n};\n\nexport default {\n Device,\n Input,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport vtkForwardPass from 'vtk.js/Sources/Rendering/OpenGL/ForwardPass';\nimport vtkOpenGLViewNodeFactory from 'vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory';\nimport vtkRenderPass from 'vtk.js/Sources/Rendering/SceneGraph/RenderPass';\nimport vtkShaderCache from 'vtk.js/Sources/Rendering/OpenGL/ShaderCache';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport vtkOpenGLTextureUnitManager from 'vtk.js/Sources/Rendering/OpenGL/TextureUnitManager';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\n\nconst { vtkDebugMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLRenderWindow methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLRenderWindow(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLRenderWindow');\n\n // Auto update style\n function updateWindow() {\n // Canvas size\n if (model.renderable) {\n model.canvas.setAttribute('width', model.size[0]);\n model.canvas.setAttribute('height', model.size[1]);\n }\n // Offscreen ?\n model.canvas.style.display = model.useOffScreen ? 'none' : 'block';\n\n // Cursor type\n if (model.el) {\n model.el.style.cursor = model.cursorVisibility ? model.cursor : 'none';\n }\n }\n publicAPI.onModified(updateWindow);\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getRenderersByReference());\n publicAPI.removeUnusedNodes();\n\n publicAPI.initialize();\n model.children.forEach((child) => {\n child.setOpenGLRenderWindow(publicAPI);\n });\n }\n };\n\n publicAPI.initialize = () => {\n if (!model.initialized) {\n model.context = publicAPI.get3DContext();\n model.textureUnitManager = vtkOpenGLTextureUnitManager.newInstance();\n model.textureUnitManager.setContext(model.context);\n model.shaderCache.setContext(model.context);\n // initialize blending for transparency\n const gl = model.context;\n gl.blendFuncSeparate(\n gl.SRC_ALPHA,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n gl.enable(gl.BLEND);\n model.initialized = true;\n }\n };\n\n publicAPI.makeCurrent = () => {\n model.context.makeCurrent();\n };\n\n publicAPI.setContainer = (el) => {\n if (model.el && model.el !== el) {\n // Remove canvas from previous container\n if (model.canvas.parentNode === model.el) {\n model.el.removeChild(model.canvas);\n } else {\n vtkErrorMacro('Error: canvas parent node does not match container');\n }\n }\n\n if (model.el !== el) {\n model.el = el;\n if (model.el) {\n model.el.appendChild(model.canvas);\n }\n\n // Trigger modified()\n publicAPI.modified();\n }\n };\n\n publicAPI.isInViewport = (x, y, viewport) => {\n const vCoords = viewport.getViewportByReference();\n const size = model.size;\n if (\n vCoords[0] * size[0] <= x &&\n vCoords[2] * size[0] >= x &&\n vCoords[1] * size[1] <= y &&\n vCoords[3] * size[1] >= y\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.getViewportSize = (viewport) => {\n const vCoords = viewport.getViewportByReference();\n const size = model.size;\n return [\n (vCoords[2] - vCoords[0]) * size[0],\n (vCoords[3] - vCoords[1]) * size[1],\n ];\n };\n\n publicAPI.getViewportCenter = (viewport) => {\n const size = publicAPI.getViewportSize(viewport);\n return [size[0] * 0.5, size[1] * 0.5];\n };\n\n publicAPI.displayToNormalizedDisplay = (x, y, z) => [\n x / model.size[0],\n y / model.size[1],\n z,\n ];\n\n publicAPI.normalizedDisplayToDisplay = (x, y, z) => [\n x * model.size[0],\n y * model.size[1],\n z,\n ];\n\n publicAPI.worldToView = (x, y, z, renderer) => {\n const dims = publicAPI.getViewportSize(renderer);\n return renderer.worldToView(x, y, z, dims[0] / dims[1]);\n };\n\n publicAPI.viewToWorld = (x, y, z, renderer) => {\n const dims = publicAPI.getViewportSize(renderer);\n return renderer.viewToWorld(x, y, z, dims[0] / dims[1]);\n };\n\n publicAPI.worldToDisplay = (x, y, z, renderer) => {\n const val = publicAPI.worldToView(x, y, z, renderer);\n const val2 = renderer.viewToNormalizedDisplay(val[0], val[1], val[2]);\n return publicAPI.normalizedDisplayToDisplay(val2[0], val2[1], val2[2]);\n };\n\n publicAPI.displayToWorld = (x, y, z, renderer) => {\n const val = publicAPI.displayToNormalizedDisplay(x, y, z);\n const val2 = renderer.normalizedDisplayToView(val[0], val[1], val[2]);\n return publicAPI.viewToWorld(val2[0], val2[1], val2[2], renderer);\n };\n\n publicAPI.normalizedDisplayToViewport = (x, y, z, renderer) => {\n let vCoords = renderer.getViewportByReference();\n vCoords = publicAPI.normalizedDisplayToDisplay(vCoords[0], vCoords[1], 0.0);\n const coords = publicAPI.normalizedDisplayToDisplay(x, y, z);\n return [coords[0] - vCoords[0] - 0.5, coords[1] - vCoords[1] - 0.5, z];\n };\n\n publicAPI.viewportToNormalizedViewport = (x, y, z, renderer) => {\n const size = publicAPI.getViewportSize(renderer);\n if (size && size[0] !== 0 && size[1] !== 0) {\n return [x / (size[0] - 1.0), y / (size[1] - 1.0), z];\n }\n return [x, y, z];\n };\n\n publicAPI.normalizedViewportToViewport = (x, y, z) => [\n x * (model.size[0] - 1.0),\n y * (model.size[1] - 1.0),\n z,\n ];\n\n publicAPI.displayToLocalDisplay = (x, y, z) => [x, model.size[1] - y - 1, z];\n\n publicAPI.viewportToNormalizedDisplay = (x, y, z, renderer) => {\n let vCoords = renderer.getViewportByReference();\n vCoords = publicAPI.normalizedDisplayToDisplay(vCoords[0], vCoords[1], 0.0);\n const x2 = x + vCoords[0] + 0.5;\n const y2 = y + vCoords[1] + 0.5;\n return publicAPI.displayToNormalizedDisplay(x2, y2, z);\n };\n\n publicAPI.getPixelData = (x1, y1, x2, y2) => {\n const pixels = new Uint8Array((x2 - x1 + 1) * (y2 - y1 + 1) * 4);\n model.context.readPixels(\n x1,\n y1,\n x2 - x1 + 1,\n y2 - y1 + 1,\n model.context.RGBA,\n model.context.UNSIGNED_BYTE,\n pixels\n );\n return pixels;\n };\n\n publicAPI.get2DContext = () => model.canvas.getContext('2d');\n\n publicAPI.get3DContext = (\n options = { preserveDrawingBuffer: false, depth: true, alpha: true }\n ) => {\n let result = null;\n\n const webgl2Supported = typeof WebGL2RenderingContext !== 'undefined';\n model.webgl2 = false;\n if (model.defaultToWebgl2 && webgl2Supported) {\n result = model.canvas.getContext('webgl2'); // , options);\n if (result) {\n model.webgl2 = true;\n vtkDebugMacro('using webgl2');\n }\n }\n if (!result) {\n result =\n model.canvas.getContext('webgl', options) ||\n model.canvas.getContext('experimental-webgl', options);\n }\n\n // Do we have webvr support\n if (navigator.getVRDisplays) {\n navigator.getVRDisplays().then((displays) => {\n if (displays.length > 0) {\n // take the first display for now\n model.vrDisplay = displays[0];\n // set the clipping ranges\n model.vrDisplay.depthNear = 0.01; // meters\n model.vrDisplay.depthFar = 100.0; // meters\n }\n });\n }\n\n // prevent default context lost handler\n model.canvas.addEventListener(\n 'webglcontextlost',\n (event) => {\n event.preventDefault();\n },\n false\n );\n\n model.canvas.addEventListener(\n 'webglcontextrestored',\n publicAPI.restoreContext,\n false\n );\n\n return result;\n };\n\n publicAPI.startVR = () => {\n if (model.vrDisplay.isConnected) {\n model.vrDisplay.requestPresent([{ source: model.canvas }]).then(() => {\n model.oldCanvasSize = [model.canvas.width, model.canvas.height];\n\n // const leftEye = model.vrDisplay.getEyeParameters('left');\n // const rightEye = model.vrDisplay.getEyeParameters('right');\n // model.canvas.width = Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2;\n // model.canvas.height = Math.max(leftEye.renderHeight, rightEye.renderHeight);\n const ren = model.renderable.getRenderers()[0];\n ren.resetCamera();\n model.vrFrameData = new VRFrameData();\n model.renderable.getInteractor().switchToVRAnimation();\n\n publicAPI.vrRender();\n });\n } else {\n vtkErrorMacro('vrDisplay is not connected');\n }\n };\n\n publicAPI.stopVR = () => {\n model.renderable.getInteractor().returnFromVRAnimation();\n model.vrDisplay.exitPresent();\n model.vrDisplay.cancelAnimationFrame(model.vrSceneFrame);\n\n model.canvas.width = model.oldCanvasSize[0];\n model.canvas.height = model.oldCanvasSize[1];\n\n const ren = model.renderable.getRenderers()[0];\n ren.getActiveCamera().setProjectionMatrix(null);\n\n ren.setViewport(0.0, 0, 1.0, 1.0);\n publicAPI.traverseAllPasses();\n };\n\n publicAPI.vrRender = () => {\n model.renderable.getInteractor().updateGamepads(model.vrDisplay.displayId);\n model.vrSceneFrame = model.vrDisplay.requestAnimationFrame(\n publicAPI.vrRender\n );\n model.vrDisplay.getFrameData(model.vrFrameData);\n\n // get the first renderer\n const ren = model.renderable.getRenderers()[0];\n\n // do the left eye\n ren.setViewport(0, 0, 0.5, 1.0);\n ren\n .getActiveCamera()\n .computeViewParametersFromPhysicalMatrix(\n model.vrFrameData.leftViewMatrix\n );\n ren\n .getActiveCamera()\n .setProjectionMatrix(model.vrFrameData.leftProjectionMatrix);\n publicAPI.traverseAllPasses();\n\n ren.setViewport(0.5, 0, 1.0, 1.0);\n ren\n .getActiveCamera()\n .computeViewParametersFromPhysicalMatrix(\n model.vrFrameData.rightViewMatrix\n );\n ren\n .getActiveCamera()\n .setProjectionMatrix(model.vrFrameData.rightProjectionMatrix);\n publicAPI.traverseAllPasses();\n\n model.vrDisplay.submitFrame();\n };\n\n publicAPI.restoreContext = () => {\n const rp = vtkRenderPass.newInstance();\n rp.setCurrentOperation('Release');\n rp.traverse(publicAPI, null);\n };\n\n publicAPI.activateTexture = (texture) => {\n // Only add if it isn't already there\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n model.context.activeTexture(model.context.TEXTURE0 + result);\n return;\n }\n\n const activeUnit = publicAPI.getTextureUnitManager().allocate();\n if (activeUnit < 0) {\n vtkErrorMacro(\n 'Hardware does not support the number of textures defined.'\n );\n return;\n }\n\n model.textureResourceIds.set(texture, activeUnit);\n model.context.activeTexture(model.context.TEXTURE0 + activeUnit);\n };\n\n publicAPI.deactivateTexture = (texture) => {\n // Only deactivate if it isn't already there\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n publicAPI.getTextureUnitManager().free(result);\n delete model.textureResourceIds.delete(texture);\n }\n };\n\n publicAPI.getTextureUnitForTexture = (texture) => {\n const result = model.textureResourceIds.get(texture);\n if (result !== undefined) {\n return result;\n }\n return -1;\n };\n\n publicAPI.getDefaultTextureInternalFormat = (vtktype, numComps, useFloat) => {\n if (model.webgl2) {\n switch (vtktype) {\n case VtkDataTypes.UNSIGNED_CHAR:\n switch (numComps) {\n case 1:\n return model.context.R8;\n case 2:\n return model.context.RG8;\n case 3:\n return model.context.RGB8;\n case 4:\n default:\n return model.context.RGBA8;\n }\n default:\n case VtkDataTypes.FLOAT:\n switch (numComps) {\n case 1:\n return model.context.R16F;\n case 2:\n return model.context.RG16F;\n case 3:\n return model.context.RGB16F;\n case 4:\n default:\n return model.context.RGBA16F;\n }\n }\n }\n\n // webgl1 only supports four types\n switch (numComps) {\n case 1:\n return model.context.LUMINANCE;\n case 2:\n return model.context.LUMINANCE_ALPHA;\n case 3:\n return model.context.RGB;\n case 4:\n default:\n return model.context.RGBA;\n }\n };\n\n function getCanvasDataURL(format = 'image/png') {\n return model.canvas.toDataURL(format);\n }\n\n publicAPI.captureImage = (format = 'image/png') => {\n if (model.deleted) {\n return null;\n }\n\n publicAPI.traverseAllPasses();\n return getCanvasDataURL(format);\n };\n\n publicAPI.traverseAllPasses = () => {\n for (let index = 0; index < model.renderPasses.length; ++index) {\n model.renderPasses[index].traverse(publicAPI, null);\n }\n if (model.notifyImageReady) {\n publicAPI.invokeImageReady(getCanvasDataURL());\n }\n };\n\n publicAPI.disableDepthMask = () => {\n if (model.depthMaskEnabled) {\n model.context.depthMask(false);\n model.depthMaskEnabled = false;\n }\n };\n\n publicAPI.enableDepthMask = () => {\n if (!model.depthMaskEnabled) {\n model.context.depthMask(true);\n model.depthMaskEnabled = true;\n }\n };\n\n publicAPI.disableCullFace = () => {\n if (model.cullFaceEnabled) {\n model.context.disable(model.context.CULL_FACE);\n model.cullFaceEnabled = false;\n }\n };\n\n publicAPI.enableCullFace = () => {\n if (!model.cullFaceEnabled) {\n model.context.enable(model.context.CULL_FACE);\n model.cullFaceEnabled = true;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n cullFaceEnabled: false,\n depthMaskEnabled: true,\n shaderCache: null,\n initialized: false,\n context: null,\n canvas: null,\n size: [300, 300],\n cursorVisibility: true,\n cursor: 'pointer',\n textureUnitManager: null,\n textureResourceIds: null,\n renderPasses: [],\n notifyImageReady: false,\n webgl2: false,\n defaultToWebgl2: false, // turned off by default\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Create internal instances\n model.canvas = document.createElement('canvas');\n\n model.textureResourceIds = new Map();\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.myFactory = vtkOpenGLViewNodeFactory.newInstance();\n model.shaderCache = vtkShaderCache.newInstance();\n\n // setup default forward pass rendering\n model.renderPasses[0] = vtkForwardPass.newInstance();\n\n macro.event(publicAPI, model, 'imageReady');\n\n // on mac default to webgl2\n if (navigator.appVersion.indexOf('Mac') !== -1) {\n model.defaultToWebgl2 = true;\n }\n\n // on linux default to webgl2\n if (navigator.platform.indexOf('Linux') !== -1) {\n model.defaultToWebgl2 = true;\n }\n\n // on firefox default to webgl2\n if (typeof InstallTrigger !== 'undefined') {\n model.defaultToWebgl2 = true;\n }\n\n // Build VTK API\n macro.get(publicAPI, model, ['shaderCache', 'textureUnitManager', 'webgl2']);\n\n macro.setGet(publicAPI, model, [\n 'initialized',\n 'context',\n 'canvas',\n 'renderPasses',\n 'notifyImageReady',\n 'defaultToWebgl2',\n 'cursor',\n ]);\n\n macro.setGetArray(publicAPI, model, ['size'], 2);\n\n // Object methods\n vtkOpenGLRenderWindow(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLRenderWindow');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/RenderWindow/index.js","import macro from 'vtk.js/Sources/macro';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVertexArrayObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVertexArrayObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVertexArrayObject');\n\n // Public API methods\n publicAPI.exposedMethod = () => {\n // This is a publicly exposed method of this object\n };\n\n publicAPI.initialize = () => {\n model.instancingExtension = null;\n if (!model.openGLRenderWindow.getWebgl2()) {\n model.instancingExtension = model.context.getExtension(\n 'ANGLE_instanced_arrays'\n );\n }\n if (\n !model.forceEmulation &&\n model.openGLRenderWindow &&\n model.openGLRenderWindow.getWebgl2()\n ) {\n model.extension = null;\n model.supported = true;\n model.handleVAO = model.context.createVertexArray();\n } else {\n model.extension = model.context.getExtension('OES_vertex_array_object');\n // Start setting up VAO\n if (!model.forceEmulation && model.extension) {\n model.supported = true;\n model.handleVAO = model.extension.createVertexArrayOES();\n } else {\n model.supported = false;\n }\n }\n };\n\n publicAPI.isReady = () =>\n // We either probed and allocated a VAO, or are falling back as the current\n // hardware does not support VAOs.\n model.handleVAO !== 0 || model.supported === false;\n\n publicAPI.bind = () => {\n // Either simply bind the VAO, or emulate behavior by binding all attributes.\n if (!publicAPI.isReady()) {\n publicAPI.initialize();\n }\n if (publicAPI.isReady() && model.supported) {\n if (model.extension) {\n model.extension.bindVertexArrayOES(model.handleVAO);\n } else {\n model.context.bindVertexArray(model.handleVAO);\n }\n } else if (publicAPI.isReady()) {\n const gl = model.context;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n model.context.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n const matrixCount = attrIt.isMatrix ? attrIt.size : 1;\n for (let i = 0; i < matrixCount; ++i) {\n gl.enableVertexAttribArray(attrIt.index + i);\n gl.vertexAttribPointer(\n attrIt.index + i,\n attrIt.size,\n attrIt.type,\n attrIt.normalize,\n attrIt.stride,\n attrIt.offset + attrIt.stride * i / attrIt.size\n );\n if (attrIt.divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(\n attrIt.index + i,\n 1\n );\n } else {\n gl.vertexAttribDivisor(attrIt.index + i, 1);\n }\n }\n }\n }\n }\n }\n };\n\n publicAPI.release = () => {\n // Either simply release the VAO, or emulate behavior by releasing all attributes.\n if (publicAPI.isReady() && model.supported) {\n if (model.extension) {\n model.extension.bindVertexArrayOES(null);\n } else {\n model.context.bindVertexArray(null);\n }\n } else if (publicAPI.isReady()) {\n const gl = model.context;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n model.context.bindBuffer(gl.ARRAY_BUFFER, buff.buffer);\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n const matrixCount = attrIt.isMatrix ? attrIt.size : 1;\n for (let i = 0; i < matrixCount; ++i) {\n gl.enableVertexAttribArray(attrIt.index + i);\n gl.vertexAttribPointer(\n attrIt.index + i,\n attrIt.size,\n attrIt.type,\n attrIt.normalize,\n attrIt.stride,\n attrIt.offset + attrIt.stride * i / attrIt.size\n );\n if (attrIt.divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(\n attrIt.index + i,\n 0\n );\n } else {\n gl.vertexAttribDivisor(attrIt.index + i, 0);\n }\n }\n gl.disableVertexAttribArray(attrIt.index + i);\n }\n }\n }\n }\n };\n\n publicAPI.shaderProgramChanged = () => {\n publicAPI.release();\n if (model.handleVAO) {\n if (model.extension) {\n model.extension.deleteVertexArrayOES(model.handleVAO);\n } else {\n model.context.deleteVertexArray(model.handleVAO);\n }\n }\n model.handleVAO = 0;\n model.handleProgram = 0;\n };\n\n publicAPI.releaseGraphicsResources = () => {\n publicAPI.shaderProgramChanged();\n if (model.handleVAO) {\n if (model.extension) {\n model.extension.deleteVertexArrayOES(model.handleVAO);\n } else {\n model.context.deleteVertexArray(model.handleVAO);\n }\n }\n model.handleVAO = 0;\n model.supported = true;\n model.handleProgram = 0;\n };\n\n publicAPI.addAttributeArray = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize\n ) =>\n publicAPI.addAttributeArrayWithDivisor(\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n 0,\n false\n );\n\n publicAPI.addAttributeArrayWithDivisor = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor,\n isMatrix\n ) => {\n if (!program) {\n return false;\n }\n\n // Check the program is bound, and the buffer is valid.\n if (\n !program.isBound() ||\n buffer.getHandle() === 0 ||\n buffer.getType() !== ObjectType.ARRAY_BUFFER\n ) {\n return false;\n }\n\n // Perform initalization if necessary, ensure program matches VAOs.\n if (model.handleProgram === 0) {\n model.handleProgram = program.getHandle();\n }\n if (!publicAPI.isReady()) {\n publicAPI.initialize();\n }\n if (!publicAPI.isReady() || model.handleProgram !== program.getHandle()) {\n return false;\n }\n\n const gl = model.context;\n\n const attribs = {};\n attribs.name = name;\n attribs.index = gl.getAttribLocation(model.handleProgram, name);\n attribs.offset = offset;\n attribs.stride = stride;\n attribs.type = elementType;\n attribs.size = elementTupleSize;\n attribs.normalize = normalize;\n attribs.isMatrix = isMatrix;\n attribs.divisor = divisor;\n\n if (attribs.Index === -1) {\n return false;\n }\n\n // Always make the call as even the first use wants the attrib pointer setting\n // up when we are emulating.\n buffer.bind();\n gl.enableVertexAttribArray(attribs.index);\n gl.vertexAttribPointer(\n attribs.index,\n attribs.size,\n attribs.type,\n attribs.normalize,\n attribs.stride,\n attribs.offset\n );\n\n if (divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(attribs.index, 1);\n } else {\n gl.vertexAttribDivisor(attribs.index, 1);\n }\n }\n\n attribs.buffer = buffer.getHandle();\n\n // If vertex array objects are not supported then build up our list.\n if (!model.supported) {\n // find the buffer\n let buffFound = false;\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n if (buff.buffer === attribs.buffer) {\n buffFound = true;\n let found = false;\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n if (attrIt.name === name) {\n found = true;\n buff.attributes[iatt] = attribs;\n }\n }\n if (!found) {\n buff.attributes.push(attribs);\n }\n }\n }\n if (!buffFound) {\n model.buffers.push({ buffer: attribs.buffer, attributes: [attribs] });\n }\n }\n return true;\n };\n\n publicAPI.addAttributeMatrixWithDivisor = (\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor\n ) => {\n // bind the first row of values\n const result = publicAPI.addAttributeArrayWithDivisor(\n program,\n buffer,\n name,\n offset,\n stride,\n elementType,\n elementTupleSize,\n normalize,\n divisor,\n true\n );\n\n if (!result) {\n return result;\n }\n\n const gl = model.context;\n\n const index = gl.getAttribLocation(model.handleProgram, name);\n\n for (let i = 1; i < elementTupleSize; i++) {\n gl.enableVertexAttribArray(index + i);\n gl.vertexAttribPointer(\n index + i,\n elementTupleSize,\n elementType,\n normalize,\n stride,\n offset + stride * i / elementTupleSize\n );\n if (divisor > 0) {\n if (model.instancingExtension) {\n model.instancingExtension.vertexAttribDivisorANGLE(index + i, 1);\n } else {\n gl.vertexAttribDivisor(index + i, 1);\n }\n }\n }\n\n return true;\n };\n\n publicAPI.removeAttributeArray = (name) => {\n if (!publicAPI.isReady() || model.handleProgram === 0) {\n return false;\n }\n\n // If we don't have real VAOs find the entry and remove it too.\n if (!model.supported) {\n for (let ibuff = 0; ibuff < model.buffers.length; ++ibuff) {\n const buff = model.buffers[ibuff];\n for (let iatt = 0; iatt < buff.attributes.length; ++iatt) {\n const attrIt = buff.attributes[iatt];\n if (attrIt.name === name) {\n buff.attributes.splice(iatt, 1);\n if (!buff.attributes.length) {\n model.buffers.splice(ibuff, 1);\n }\n return true;\n }\n }\n }\n }\n\n return true;\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n forceEmulation: false,\n handleVAO: 0,\n handleProgram: 0,\n supported: true,\n buffers: null,\n context: null,\n openGLRenderWindow: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Internal objects initialization\n model.buffers = [];\n\n // Object methods\n macro.obj(publicAPI, model);\n\n // Create get-only macros\n macro.get(publicAPI, model, ['supported']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['forceEmulation']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkOpenGLVertexArrayObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLVertexArrayObject'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/VertexArrayObject/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderPass(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderPass');\n\n publicAPI.getOperation = () => model.currentOperation;\n\n publicAPI.setCurrentOperation = (val) => {\n model.currentOperation = val;\n model.currentTraverseOperation = `traverse${macro.capitalize(\n model.currentOperation\n )}`;\n };\n\n publicAPI.getTraverseOperation = () => model.currentTraverseOperation;\n\n // by default this class will traverse all of its\n // preDelegateOperations, then call its delegate render passes\n // the traverse all of its postDelegateOperations\n // any of those three arrays can be empty\n publicAPI.traverse = (viewNode, parent = null) => {\n if (model.deleted) {\n return;\n }\n\n // we just render our delegates in order\n model.currentParent = parent;\n\n model.preDelegateOperations.forEach((val) => {\n publicAPI.setCurrentOperation(val);\n viewNode.traverse(publicAPI);\n });\n model.delegates.forEach((val) => {\n val.traverse(viewNode, publicAPI);\n });\n model.postDelegateOperations.forEach((val) => {\n publicAPI.setCurrentOperation(val);\n viewNode.traverse(publicAPI);\n });\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n delegates: [],\n currentOperation: null,\n preDelegateOperations: [],\n postDelegateOperations: [],\n currentParent: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['currentOperation']);\n macro.setGet(publicAPI, model, [\n 'delegates',\n 'currentParent',\n 'preDelegateOperations',\n 'postDelegateOperations',\n ]);\n\n // Object methods\n vtkRenderPass(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderPass');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/RenderPass/index.js","// 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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 73\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n\\nattribute vec4 vertexMC;\\n\\n// frag position in VC\\n//VTK::PositionVC::Dec\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n// extra lighting parameters\\n//VTK::Light::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\n// Apple Bug\\n//VTK::PrimID::Dec\\n\\nvoid main()\\n{\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n //VTK::PrimID::Impl\\n\\n //VTK::PositionVC::Impl\\n\\n //VTK::Light::Impl\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl\n// module id = 74\n// module chunks = 0","module.exports = (__webpack_require__(3))(4);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/rest.js from dll-reference girder_lib\n// module id = 75\n// module chunks = 0","module.exports = (__webpack_require__(3))(71);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/webpack/buildin/global.js from dll-reference girder_lib\n// module id = 76\n// module chunks = 0","\nimport { getCurrentUser } from '@girder/core/auth';\nimport { AccessType } from '@girder/core/constants';\nimport events from '@girder/core/events';\nimport { restRequest } from '@girder/core/rest';\nimport { wrap } from '@girder/core/utilities/PluginUtils';\n\nimport ItemView from '@girder/core/views/body/ItemView';\nimport SearchFieldWidget from '@girder/core/views/widgets/SearchFieldWidget';\n\nimport DicomItemView from './views/DicomView';\nimport ParseDicomItemTemplate from './templates/parseDicomItem.pug';\n\nwrap(ItemView, 'render', function (render) {\n this.once('g:rendered', () => {\n // Add a button to force DICOM extraction\n if (this.model.get('_accessLevel') >= AccessType.WRITE) {\n this.$('.g-item-actions-menu').prepend(ParseDicomItemTemplate({\n item: this.model,\n currentUser: getCurrentUser()\n }));\n }\n\n if (this.model.has('dicom')) {\n new DicomItemView({\n parentView: this,\n item: this.model\n })\n .render()\n .$el.insertAfter(this.$('.g-item-info'));\n }\n });\n return render.call(this);\n});\n\nItemView.prototype.events['click .g-dicom-parse-item'] = function () {\n restRequest({\n method: 'POST',\n url: `item/${this.model.id}/parseDicom`,\n error: null\n })\n .done((resp) => {\n // Show up a message to alert the user it was done\n events.trigger('g:alert', {\n icon: 'ok',\n text: 'Dicom item parsed.',\n type: 'success',\n timeout: 4000\n });\n })\n .fail((resp) => {\n events.trigger('g:alert', {\n icon: 'cancel',\n text: 'No Dicom metadata.',\n type: 'danger',\n timeout: 4000\n });\n });\n};\n\nSearchFieldWidget.addMode(\n 'dicom',\n ['item'],\n 'DICOM metadata search',\n `You are searching for text in DICOM metadata. Only Girder items which have been preprocessed to\n extract DICOM images will be searched. The search text may appear anywhere within the common (i.e.\n shared across slices) metadata keys or values of a DICOM image.`\n);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/main.js","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n;(function ($) {\n 'use strict'\n\n /*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n function safeAdd (x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /*\n * Bitwise rotate a 32-bit number to the left.\n */\n function bitRotateLeft (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /*\n * These functions implement the four basic operations the algorithm uses.\n */\n function md5cmn (q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n function md5ff (a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n function md5gg (a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n function md5hh (a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n function md5ii (a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n function binlMD5 (x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32)\n x[((len + 64) >>> 9 << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /*\n * Convert an array of little-endian words to a string\n */\n function binl2rstr (input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)\n }\n return output\n }\n\n /*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n function rstr2binl (input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)\n }\n return output\n }\n\n /*\n * Calculate the MD5 of a raw string\n */\n function rstrMD5 (s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\n function rstrHMACMD5 (key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /*\n * Convert a raw string to a hex string\n */\n function rstr2hex (input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /*\n * Encode a string as utf-8\n */\n function str2rstrUTF8 (input) {\n return unescape(encodeURIComponent(input))\n }\n\n /*\n * Take string arguments and return either raw or hex encoded strings\n */\n function rawMD5 (s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n function hexMD5 (s) {\n return rstr2hex(rawMD5(s))\n }\n function rawHMACMD5 (k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n function hexHMACMD5 (k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n function md5 (string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/blueimp-md5/js/md5.js\n// module id = 78\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ****/\n\n/**\n * daikon\n * @type {*|{}}\n */\nvar daikon = daikon || {};\n\ndaikon.CompressionUtils = daikon.CompressionUtils || ((typeof require !== 'undefined') ? require('./compression-utils.js') : null);\ndaikon.Dictionary = daikon.Dictionary || ((typeof require !== 'undefined') ? require('./dictionary.js') : null);\ndaikon.Image = daikon.Image || ((typeof require !== 'undefined') ? require('./image.js') : null);\ndaikon.OrderedMapIterator = daikon.OrderedMapIterator || ((typeof require !== 'undefined') ? require('./iterator.js') : null);\ndaikon.OrderedMap = daikon.OrderedMap || ((typeof require !== 'undefined') ? require('./orderedmap.js') : null);\ndaikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\ndaikon.RLE = daikon.RLE || ((typeof require !== 'undefined') ? require('./rle.js') : null);\ndaikon.Series = daikon.Series || ((typeof require !== 'undefined') ? require('./series.js') : null);\ndaikon.Tag = daikon.Tag || ((typeof require !== 'undefined') ? require('./tag.js') : null);\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\ndaikon.Siemens = daikon.Siemens || ((typeof require !== 'undefined') ? require('./siemens.js') : null);\n\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.Decoder = ((typeof require !== 'undefined') ? require('jpeg-lossless-decoder-js') : null);\n\nvar JpegDecoder = JpegDecoder || ((typeof require !== 'undefined') ? require('../lib/jpeg-baseline.js').JpegImage : null);\n\nvar JpxImage = JpxImage || ((typeof require !== 'undefined') ? require('../lib/jpx.js') : null);\n\nvar CharLS = CharLS || ((typeof require !== 'undefined') ? require('../lib/charLS-DynamicMemory-browser.js') : null);\nvar JpegLSDecoder = JpegLSDecoder || ((typeof require !== 'undefined') ? require('../lib/jpeg-ls.js') : null);\n\nvar pako = pako || ((typeof require !== 'undefined') ? require('pako') : null);\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/main.js\n// module id = 79\n// module chunks = 0","\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar daikon = daikon || {};\ndaikon.Parser = daikon.Parser || ((typeof require !== 'undefined') ? require('./parser.js') : null);\ndaikon.Image = daikon.Image || ((typeof require !== 'undefined') ? require('./image.js') : null);\ndaikon.OrderedMap = daikon.OrderedMap || ((typeof require !== 'undefined') ? require('./orderedmap.js') : null);\ndaikon.OrderedMapIterator = daikon.OrderedMapIterator || ((typeof require !== 'undefined') ? require('./iterator.js') : null);\ndaikon.Utils = daikon.Utils || ((typeof require !== 'undefined') ? require('./utilities.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Series constructor.\n * @property {daikon.Image[]} images\n * @type {Function}\n */\ndaikon.Series = daikon.Series || function () {\n this.images = [];\n this.imagesOriginalOrder = null;\n this.isMosaic = false;\n this.isElscint = false;\n this.isCompressed = false;\n this.numberOfFrames = 0;\n this.numberOfFramesInFile = 0;\n this.isMultiFrame = false;\n this.isMultiFrameVolume = false;\n this.isMultiFrameTimeseries = false;\n this.isImplicitTimeseries = false;\n this.sliceSense = false;\n this.sliceDir = daikon.Image.SLICE_DIRECTION_UNKNOWN;\n this.error = null;\n};\n\n\n/*** Static fields ***/\ndaikon.Series.parserError = null;\n\n/**\n * True to keep original order of images, ignoring metadata-based ordering.\n * @type {boolean}\n */\ndaikon.Series.useExplicitOrdering = false;\n\n/**\n * A hint to software to use this explicit distance (mm) between slices (see daikon.Series.useExplicitOrdering)\n * @type {number}\n */\ndaikon.Series.useExplicitSpacing = 0;\n\n\n/*** Static Methods ***/\n\n/**\n * Parses the DICOM header and return an image object.\n * @param {DataView} data\n * @returns {daikon.Image|null}\n */\ndaikon.Series.parseImage = function (data) {\n var parser, image;\n\n parser = new daikon.Parser();\n image = parser.parse(data);\n\n if (parser.hasError()) {\n daikon.Series.parserError = parser.error;\n return null;\n }\n\n if (parser.inflated) {\n image.inflated = parser.inflated;\n }\n\n return image;\n};\n\n\n\ndaikon.Series.getMosaicOffset = function (mosaicCols, mosaicColWidth, mosaicRowHeight, mosaicWidth, xLocVal,\n yLocVal, zLocVal) {\n var xLoc, yLoc, zLoc;\n\n xLoc = xLocVal;\n yLoc = yLocVal;\n zLoc = zLocVal;\n\n xLoc = ((zLoc % mosaicCols) * mosaicColWidth) + xLoc;\n yLoc = (((parseInt(zLoc / mosaicCols)) * mosaicRowHeight) + yLoc) * mosaicWidth;\n\n return (xLoc + yLoc);\n};\n\n\n\ndaikon.Series.orderDicoms = function (images, numFrames, sliceDir) {\n var hasImagePosition, hasSliceLocation, hasImageNumber, timeMap, timeIt, ctr, ctrIn, dg, ordered,\n imagesOrderedByTimeAndSpace;\n\n hasImagePosition = (images[0].getImagePosition() !== null);\n hasSliceLocation = (images[0].getSliceLocation() !== null);\n hasImageNumber = (images[0].getImageNumber() !== null);\n\n timeMap = daikon.Series.orderByTime(images, numFrames, sliceDir, hasImagePosition, hasSliceLocation);\n timeIt = timeMap.orderedKeys;\n\n imagesOrderedByTimeAndSpace = [];\n\n for (ctr = 0; ctr < timeIt.length; ctr += 1) {\n dg = timeMap.get(timeIt[ctr]);\n\n if (hasImagePosition) {\n ordered = daikon.Series.orderByImagePosition(dg, sliceDir);\n } else if (hasSliceLocation) {\n ordered = daikon.Series.orderBySliceLocation(dg);\n } else if (hasImageNumber) {\n ordered = daikon.Series.orderByImageNumber(dg);\n } else {\n ordered = dg;\n }\n\n for (ctrIn = 0; ctrIn < ordered.length; ctrIn += 1) {\n imagesOrderedByTimeAndSpace.push(ordered[ctrIn]);\n }\n }\n\n for (ctrIn = 0; ctrIn < imagesOrderedByTimeAndSpace.length; ctrIn += 1) {\n imagesOrderedByTimeAndSpace[ctrIn].index = ctrIn;\n }\n\n return imagesOrderedByTimeAndSpace;\n};\n\n\n\ndaikon.Series.orderByImagePosition = function (images, sliceDir) {\n var dicomMap, ctr;\n dicomMap = new daikon.OrderedMap();\n\n for (ctr = 0; ctr < images.length; ctr += 1) {\n dicomMap.put(images[ctr].getImagePositionSliceDir(sliceDir), images[ctr]);\n }\n\n return dicomMap.getOrderedValues();\n};\n\n\n\ndaikon.Series.orderBySliceLocation = function (images) {\n var dicomMap, ctr;\n dicomMap = new daikon.OrderedMap();\n\n for (ctr = 0; ctr < images.length; ctr += 1) {\n dicomMap.put(images[ctr].getSliceLocation(), images[ctr]);\n }\n\n return dicomMap.getOrderedValues();\n};\n\n\n\ndaikon.Series.orderByImageNumber = function (images) {\n var dicomMap, ctr;\n dicomMap = new daikon.OrderedMap();\n\n for (ctr = 0; ctr < images.length; ctr += 1) {\n dicomMap.put(images[ctr].getImageNumber(), images[ctr]);\n }\n\n return dicomMap.getOrderedValues();\n};\n\n\n\ndaikon.Series.hasMatchingSlice = function (dg, image, sliceDir, doImagePos, doSliceLoc) {\n var matchingNum = 0, ctr, current, imagePos, sliceLoc, imageNum;\n\n if (doImagePos) {\n matchingNum = image.getImagePositionSliceDir(sliceDir);\n } else if (doSliceLoc) {\n matchingNum = image.getSliceLocation();\n } else {\n matchingNum = image.getImageNumber();\n }\n\n for (ctr = 0; ctr < dg.length; ctr += 1) {\n current = dg[ctr];\n\n if (doImagePos) {\n imagePos = current.getImagePositionSliceDir(sliceDir);\n if (imagePos === matchingNum) {\n return true;\n }\n } else if (doSliceLoc) {\n sliceLoc = current.getSliceLocation();\n if (sliceLoc === matchingNum) {\n return true;\n }\n } else {\n imageNum = current.getImageNumber();\n if (imageNum === matchingNum) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n\n\ndaikon.Series.orderByTime = function (images, numFrames, sliceDir, hasImagePosition, hasSliceLocation) {\n var dicomMap, hasTemporalPosition, hasTemporalNumber, ctr, image, tempPos, dg, timeBySliceMap, imageNum,\n sliceMarker, slice, dicomsCopy, dicomsCopyIndex, sliceIt, timeIt, dgFound, it;\n\n dicomMap = new daikon.OrderedMap();\n hasTemporalPosition = (numFrames > 1) && (images[0].getTemporalPosition() !== null);\n hasTemporalNumber = (numFrames > 1) && (images[0].getTemporalNumber() !== null) && (images[0].getTemporalNumber() === numFrames);\n\n if (hasTemporalPosition && hasTemporalNumber) { // explicit series\n for (ctr = 0; ctr < images.length; ctr += 1) {\n image = images[ctr];\n\n tempPos = image.getTemporalPosition();\n dg = dicomMap.get(tempPos);\n if (!dg) {\n dg = [];\n dicomMap.put(tempPos, dg);\n }\n\n dg.push(image);\n }\n } else { // implicit series\n // order data by slice then time\n timeBySliceMap = new daikon.OrderedMap();\n for (ctr = 0; ctr < images.length; ctr += 1) {\n if (images[ctr] !== null) {\n imageNum = images[ctr].getImageNumber();\n sliceMarker = ctr;\n if (hasImagePosition) {\n sliceMarker = images[ctr].getImagePositionSliceDir(sliceDir);\n } else if (hasSliceLocation) {\n sliceMarker = images[ctr].getSliceLocation();\n }\n\n slice = timeBySliceMap.get(sliceMarker);\n if (slice === null) {\n slice = new daikon.OrderedMap();\n timeBySliceMap.put(sliceMarker, slice);\n }\n\n slice.put(ctr, images[ctr]);\n }\n }\n\n // copy into DICOM array (ordered by slice by time)\n dicomsCopy = [];\n dicomsCopyIndex = 0;\n sliceIt = timeBySliceMap.iterator();\n while (sliceIt.hasNext()) {\n slice = sliceIt.next();\n timeIt = slice.iterator();\n while (timeIt.hasNext()) {\n dicomsCopy[dicomsCopyIndex] = timeIt.next();\n dicomsCopyIndex += 1;\n }\n }\n\n // groups dicoms by timepoint\n for (ctr = 0; ctr < dicomsCopy.length; ctr += 1) {\n if (dicomsCopy[ctr] !== null) {\n dgFound = null;\n it = dicomMap.iterator();\n while (it.hasNext()) {\n dg = it.next();\n if (!daikon.Series.hasMatchingSlice(dg, dicomsCopy[ctr], sliceDir, hasImagePosition, hasSliceLocation)) {\n dgFound = dg;\n break;\n }\n }\n\n if (dgFound === null) {\n dgFound = [];\n dicomMap.put(dicomMap.orderedKeys.length, dgFound);\n }\n\n dgFound.push(dicomsCopy[ctr]);\n }\n }\n }\n\n return dicomMap;\n};\n\n\n/*** Prototype Methods ***/\n\ndaikon.Series.prototype.getOrder = function () {\n var ctr, order = [];\n\n for (ctr = 0; ctr < this.imagesOriginalOrder.length; ctr += 1) {\n order[ctr] = this.imagesOriginalOrder[ctr].index;\n }\n\n return order;\n};\n\n\n/**\n * Returns the series ID.\n * @returns {string}\n */\ndaikon.Series.prototype.toString = function () {\n return this.images[0].getSeriesId();\n};\n\n\n/**\n * Returns a nice name for the series.\n * @returns {string|null}\n */\ndaikon.Series.prototype.getName = function () {\n var des = this.images[0].getSeriesDescription();\n var uid = this.images[0].getSeriesInstanceUID();\n\n if (des !== null) {\n return des;\n }\n\n if (uid !== null) {\n return uid;\n }\n\n return null;\n};\n\n\n/**\n * Adds an image to the series.\n * @param {daikon.Image} image\n */\ndaikon.Series.prototype.addImage = function (image) {\n this.images.push(image);\n};\n\n\n/**\n * Returns true if the specified image is part of the series (or if no images are yet part of the series).\n * @param {daikon.Image} image\n * @returns {boolean}\n */\ndaikon.Series.prototype.matchesSeries = function (image) {\n if (this.images.length === 0) {\n return true;\n }\n\n return (this.images[0].getSeriesId() === image.getSeriesId());\n};\n\n\n/**\n * Orders and organizes the images in this series.\n */\ndaikon.Series.prototype.buildSeries = function () {\n var hasFrameTime, ctr, sliceLoc, orderedImages, sliceLocationFirst, sliceLocationLast, sliceLocDiff,\n sliceLocations, orientation, imagePos;\n\n this.isMosaic = this.images[0].isMosaic();\n this.isElscint = this.images[0].isElscint();\n this.isCompressed = this.images[0].isCompressed();\n\n // check for multi-frame\n this.numberOfFrames = this.images[0].getNumberOfFrames();\n this.numberOfFramesInFile = this.images[0].getNumberOfImplicitFrames();\n this.isMultiFrame = (this.numberOfFrames > 1) || (this.isMosaic && (this.images[0].length > 1));\n this.isMultiFrameVolume = false;\n this.isMultiFrameTimeseries = false;\n this.isImplicitTimeseries = false;\n\n if (this.isMultiFrame) {\n hasFrameTime = (this.images[0].getFrameTime() > 0);\n if (this.isMosaic) {\n this.isMultiFrameTimeseries = true;\n } else {\n if (hasFrameTime) {\n this.isMultiFrameTimeseries = true;\n } else if (this.numberOfFramesInFile > 1) {\n this.isMultiFrameTimeseries = true;\n this.numberOfFrames = this.images.length;\n } else {\n this.isMultiFrameVolume = true;\n }\n }\n }\n\n if (!this.isMosaic && (this.numberOfFrames <= 1)) { // check for implicit frame count\n imagePos = (this.images[0].getImagePosition() || []);\n sliceLoc = imagePos.toString();\n this.numberOfFrames = 0;\n\n for (ctr = 0; ctr < this.images.length; ctr += 1) {\n imagePos = (this.images[ctr].getImagePosition() || []);\n\n if (imagePos.toString() === sliceLoc) {\n this.numberOfFrames += 1;\n }\n }\n\n if (this.numberOfFrames > 1) {\n this.isImplicitTimeseries = true;\n }\n }\n\n this.sliceDir = this.images[0].getAcquiredSliceDirection();\n\n if (daikon.Series.useExplicitOrdering) {\n orderedImages = this.images.slice();\n } else {\n orderedImages = daikon.Series.orderDicoms(this.images, this.numberOfFrames, this.sliceDir);\n }\n\n sliceLocationFirst = orderedImages[0].getImagePositionSliceDir(this.sliceDir);\n sliceLocationLast = orderedImages[orderedImages.length - 1].getImagePositionSliceDir(this.sliceDir);\n sliceLocDiff = sliceLocationLast - sliceLocationFirst;\n\n if (daikon.Series.useExplicitOrdering) {\n this.sliceSense = false;\n } else if (this.isMosaic) {\n this.sliceSense = true;\n } else if (this.isMultiFrame) {\n sliceLocations = orderedImages[0].getSliceLocationVector();\n if (sliceLocations !== null) {\n orientation = orderedImages[0].getOrientation();\n\n if (orientation.charAt(2) === 'Z') {\n this.sliceSense = (sliceLocations[0] - sliceLocations[sliceLocations.length - 1]) < 0;\n } else {\n this.sliceSense = (sliceLocations[0] - sliceLocations[sliceLocations.length - 1]) > 0;\n }\n } else {\n this.sliceSense = sliceLocationFirst < 0 ? false : true; // maybe???\n }\n } else {\n /*\n * \"The direction of the axes is defined fully by the patient's orientation. The x-axis is increasing to the left hand side of the patient. The\n * y-axis is increasing to the posterior side of the patient. The z-axis is increasing toward the head of the patient.\"\n */\n if ((this.sliceDir === daikon.Image.SLICE_DIRECTION_SAGITTAL) || (this.sliceDir === daikon.Image.SLICE_DIRECTION_CORONAL)) {\n if (sliceLocDiff > 0) {\n this.sliceSense = false;\n } else {\n this.sliceSense = true;\n }\n } else {\n if (sliceLocDiff > 0) {\n this.sliceSense = true;\n } else {\n this.sliceSense = false;\n }\n }\n }\n\n this.imagesOriginalOrder = this.images;\n this.images = orderedImages;\n};\n\n\n/**\n * Concatenates image data (asynchronously).\n * @param {object} progressMeter -- the object must have a drawProgress(percent, label) function [e.g., drawProgress(.5, \"Loading...\")]\n * @param {Function} onFinishedImageRead -- callback\n */\ndaikon.Series.prototype.concatenateImageData = function (progressMeter, onFinishedImageRead) {\n var buffer, data, length;\n\n if (this.isMosaic) {\n data = this.getMosaicData(this.images[0], this.images[0].getPixelDataBytes());\n } else {\n data = this.images[0].getPixelDataBytes();\n }\n\n length = this.validatePixelDataLength(this.images[0]);\n this.images[0].clearPixelData();\n buffer = new Uint8Array(new ArrayBuffer(length * this.images.length));\n buffer.set(new Uint8Array(data, 0, length), 0);\n\n setTimeout(daikon.Utils.bind(this, function() { this.concatenateNextImageData(buffer, length, progressMeter, 1, onFinishedImageRead)}), 0);\n};\n\n\n\ndaikon.Series.prototype.concatenateNextImageData = function (buffer, frameSize, progressMeter, index,\n onFinishedImageRead) {\n var data, length;\n\n if (index >= this.images.length) {\n if (progressMeter) {\n progressMeter.drawProgress(1, \"Reading DICOM Images\");\n }\n\n onFinishedImageRead(buffer.buffer);\n } else {\n if (progressMeter) {\n progressMeter.drawProgress(index / this.images.length, \"Reading DICOM Images\");\n }\n\n if (this.isMosaic) {\n data = this.getMosaicData(this.images[index], this.images[index].getPixelDataBytes());\n } else {\n data = this.images[index].getPixelDataBytes();\n }\n\n length = this.validatePixelDataLength(this.images[index]);\n this.images[index].clearPixelData();\n buffer.set(new Uint8Array(data, 0, length), (frameSize * index));\n\n setTimeout(daikon.Utils.bind(this, function() {this.concatenateNextImageData(buffer, frameSize, progressMeter,\n index + 1, onFinishedImageRead);}), 0);\n }\n};\n\n\n\ndaikon.Series.prototype.validatePixelDataLength = function (image) {\n var length = image.getPixelDataBytes().byteLength,\n sliceLength = image.getCols() * image.getRows();\n\n // pixel data length should be divisible by slice size, if not, try to figure out correct pixel data length\n if ((length % sliceLength) === 0) {\n return length;\n }\n\n return sliceLength * image.getNumberOfFrames() * image.getNumberOfSamplesPerPixel() * (image.getBitsAllocated() / 8);\n};\n\n\n\ndaikon.Series.prototype.getMosaicData = function (image, data) {\n var mosaicWidth, mosaicHeight, mosaicRows, mosaicCols, mosaicRowHeight, mosaicColWidth,\n numBytes, ctrS, ctrR, ctrC, numSlices, numRows, numCols, buffer, dataTyped, offset, ctr, index = 0;\n\n numBytes = parseInt(this.images[0].getBitsAllocated() / 8);\n numSlices = this.images[0].getMosaicCols() * this.images[0].getMosaicRows();\n numRows = parseInt(this.images[0].getRows() / this.images[0].getMosaicRows());\n numCols = parseInt(this.images[0].getCols() / this.images[0].getMosaicCols());\n\n mosaicWidth = this.images[0].getCols();\n mosaicHeight = this.images[0].getRows();\n mosaicRows = this.images[0].getMosaicRows();\n mosaicCols = this.images[0].getMosaicCols();\n mosaicRowHeight = parseInt(mosaicHeight / mosaicRows);\n mosaicColWidth = parseInt(mosaicWidth / mosaicCols);\n\n buffer = new Uint8Array(new ArrayBuffer(numSlices * numRows * numCols * numBytes));\n dataTyped = new Uint8Array(data);\n\n for (ctrS = 0; ctrS < numSlices; ctrS += 1) {\n for (ctrR = 0; ctrR < numRows; ctrR += 1) {\n for (ctrC = 0; ctrC < numCols; ctrC += 1) {\n offset = daikon.Series.getMosaicOffset(mosaicCols, mosaicColWidth, mosaicRowHeight, mosaicWidth, ctrC,\n ctrR, ctrS);\n for (ctr = 0; ctr < numBytes; ctr += 1) {\n buffer[index] = dataTyped[(offset * numBytes) + ctr];\n index += 1;\n }\n }\n }\n }\n\n return buffer.buffer;\n};\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = daikon.Series;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/daikon/src/series.js\n// module id = 80\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 2x2 Matrix\n * @name mat2\n */\nvar mat2 = {};\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\nmat2.create = function() {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n};\n\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {mat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\nmat2.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n};\n\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nmat2.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n};\n\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\nmat2.identity = function(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n};\n\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nmat2.transpose = function(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n \n return out;\n};\n\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nmat2.invert = function(out, a) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n\n // Calculate the determinant\n det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n \n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n\n return out;\n};\n\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nmat2.adjoint = function(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n\n return out;\n};\n\n/**\n * Calculates the determinant of a mat2\n *\n * @param {mat2} a the source matrix\n * @returns {Number} determinant of a\n */\nmat2.determinant = function (a) {\n return a[0] * a[3] - a[2] * a[1];\n};\n\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the first operand\n * @param {mat2} b the second operand\n * @returns {mat2} out\n */\nmat2.multiply = function (out, a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n};\n\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\nmat2.mul = mat2.multiply;\n\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\nmat2.rotate = function (out, a, rad) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n};\n\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the matrix to rotate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\nmat2.scale = function(out, a, v) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n v0 = v[0], v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n};\n\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\nmat2.fromRotation = function(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat2} out\n */\nmat2.fromScaling = function(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n\n/**\n * Returns a string representation of a mat2\n *\n * @param {mat2} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nmat2.str = function (a) {\n return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n};\n\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {mat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nmat2.frob = function (a) {\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2)))\n};\n\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {mat2} L the lower triangular matrix \n * @param {mat2} D the diagonal matrix \n * @param {mat2} U the upper triangular matrix \n * @param {mat2} a the input matrix to factorize\n */\n\nmat2.LDU = function (L, D, U, a) { \n L[2] = a[2]/a[0]; \n U[0] = a[0]; \n U[1] = a[1]; \n U[3] = a[3] - L[2] * U[1]; \n return [L, D, U]; \n}; \n\n\nmodule.exports = mat2;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat2.js\n// module id = 81\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 2x3 Matrix\n * @name mat2d\n * \n * @description \n * A mat2d contains six elements defined as:\n *
\n * [a, c, tx,\n *  b, d, ty]\n * 
\n * This is a short form for the 3x3 matrix:\n *
\n * [a, c, tx,\n *  b, d, ty,\n *  0, 0, 1]\n * 
\n * The last row is ignored so the array is shorter and operations are faster.\n */\nvar mat2d = {};\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\nmat2d.create = function() {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n};\n\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {mat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\nmat2d.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n};\n\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the source matrix\n * @returns {mat2d} out\n */\nmat2d.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n};\n\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\nmat2d.identity = function(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n};\n\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the source matrix\n * @returns {mat2d} out\n */\nmat2d.invert = function(out, a) {\n var aa = a[0], ab = a[1], ac = a[2], ad = a[3],\n atx = a[4], aty = a[5];\n\n var det = aa * ad - ab * ac;\n if(!det){\n return null;\n }\n det = 1.0 / det;\n\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n};\n\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {mat2d} a the source matrix\n * @returns {Number} determinant of a\n */\nmat2d.determinant = function (a) {\n return a[0] * a[3] - a[1] * a[2];\n};\n\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the first operand\n * @param {mat2d} b the second operand\n * @returns {mat2d} out\n */\nmat2d.multiply = function (out, a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n};\n\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\nmat2d.mul = mat2d.multiply;\n\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\nmat2d.rotate = function (out, a, rad) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n};\n\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to translate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\nmat2d.scale = function(out, a, v) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n v0 = v[0], v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n};\n\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to translate\n * @param {vec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\nmat2d.translate = function(out, a, v) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5],\n v0 = v[0], v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n};\n\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\nmat2d.fromRotation = function(out, rad) {\n var s = Math.sin(rad), c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat2d} out\n */\nmat2d.fromScaling = function(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {vec2} v Translation vector\n * @returns {mat2d} out\n */\nmat2d.fromTranslation = function(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n\n/**\n * Returns a string representation of a mat2d\n *\n * @param {mat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nmat2d.str = function (a) {\n return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + \n a[3] + ', ' + a[4] + ', ' + a[5] + ')';\n};\n\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {mat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nmat2d.frob = function (a) { \n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + 1))\n}; \n\nmodule.exports = mat2d;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat2d.js\n// module id = 82\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 4x4 Matrix\n * @name mat4\n */\nvar mat4 = {};\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\nmat4.create = function() {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n};\n\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nmat4.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};\n\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nmat4.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};\n\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nmat4.identity = function(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n};\n\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nmat4.transpose = function(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3],\n a12 = a[6], a13 = a[7],\n a23 = a[11];\n\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n \n return out;\n};\n\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nmat4.invert = function(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n // Calculate the determinant\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) { \n return null; \n }\n det = 1.0 / det;\n\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n\n return out;\n};\n\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nmat4.adjoint = function(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22));\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12));\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22));\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12));\n out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21));\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11));\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21));\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11));\n return out;\n};\n\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nmat4.determinant = function (a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n};\n\n/**\n * Multiplies two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nmat4.multiply = function (out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; \n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n return out;\n};\n\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\nmat4.mul = mat4.multiply;\n\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */\nmat4.translate = function (out, a, v) {\n var x = v[0], y = v[1], z = v[2],\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;\n out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;\n out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;\n\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n};\n\n/**\n * Scales the mat4 by the dimensions in the given vec3\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nmat4.scale = function(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n};\n\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nmat4.rotate = function (out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s, c, t,\n a00, a01, a02, a03,\n a10, a11, a12, a13,\n a20, a21, a22, a23,\n b00, b01, b02,\n b10, b11, b12,\n b20, b21, b22;\n\n if (Math.abs(len) < glMatrix.EPSILON) { return null; }\n \n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n\n a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];\n a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];\n a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];\n\n // Construct the elements of the rotation matrix\n b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;\n b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;\n b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;\n\n // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n};\n\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.rotateX = function (out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n};\n\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.rotateY = function (out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n};\n\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.rotateZ = function (out, a, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad),\n a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n\n if (a !== out) { // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n};\n\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nmat4.fromTranslation = function(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Scaling vector\n * @returns {mat4} out\n */\nmat4.fromScaling = function(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nmat4.fromRotation = function(out, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2],\n len = Math.sqrt(x * x + y * y + z * z),\n s, c, t;\n \n if (Math.abs(len) < glMatrix.EPSILON) { return null; }\n \n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n \n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n \n // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.fromXRotation = function(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n \n // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.fromYRotation = function(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n \n // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nmat4.fromZRotation = function(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n \n // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * var quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nmat4.fromRotationTranslation = function (out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n \n return out;\n};\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * var quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @param {vec3} s Scaling vector\n * @returns {mat4} out\n */\nmat4.fromRotationTranslationScale = function (out, q, v, s) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2,\n sx = s[0],\n sy = s[1],\n sz = s[2];\n\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n \n return out;\n};\n\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * var quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @param {vec3} s Scaling vector\n * @param {vec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\nmat4.fromRotationTranslationScaleOrigin = function (out, q, v, s, o) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2,\n \n sx = s[0],\n sy = s[1],\n sz = s[2],\n\n ox = o[0],\n oy = o[1],\n oz = o[2];\n \n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0] + ox - (out[0] * ox + out[4] * oy + out[8] * oz);\n out[13] = v[1] + oy - (out[1] * ox + out[5] * oy + out[9] * oz);\n out[14] = v[2] + oz - (out[2] * ox + out[6] * oy + out[10] * oz);\n out[15] = 1;\n \n return out;\n};\n\nmat4.fromQuat = function (out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3],\n x2 = x + x,\n y2 = y + y,\n z2 = z + z,\n\n xx = x * x2,\n yx = y * x2,\n yy = y * y2,\n zx = z * x2,\n zy = z * y2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n\n return out;\n};\n\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nmat4.frustum = function (out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left),\n tb = 1 / (top - bottom),\n nf = 1 / (near - far);\n out[0] = (near * 2) * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = (near * 2) * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (far * near * 2) * nf;\n out[15] = 0;\n return out;\n};\n\n/**\n * Generates a perspective projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nmat4.perspective = function (out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf = 1 / (near - far);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = (2 * far * near) * nf;\n out[15] = 0;\n return out;\n};\n\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nmat4.perspectiveFromFieldOfView = function (out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI/180.0),\n downTan = Math.tan(fov.downDegrees * Math.PI/180.0),\n leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0),\n rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0),\n xScale = 2.0 / (leftTan + rightTan),\n yScale = 2.0 / (upTan + downTan);\n\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = ((upTan - downTan) * yScale * 0.5);\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = (far * near) / (near - far);\n out[15] = 0.0;\n return out;\n}\n\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nmat4.ortho = function (out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right),\n bt = 1 / (bottom - top),\n nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n};\n\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nmat4.lookAt = function (out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,\n eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2],\n centerx = center[0],\n centery = center[1],\n centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON &&\n Math.abs(eyey - centery) < glMatrix.EPSILON &&\n Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return mat4.identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n\n return out;\n};\n\n/**\n * Returns a string representation of a mat4\n *\n * @param {mat4} mat matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nmat4.str = function (a) {\n return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' +\n a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' +\n a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + \n a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')';\n};\n\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {mat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nmat4.frob = function (a) {\n return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) ))\n};\n\n\nmodule.exports = mat4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/mat4.js\n// module id = 83\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\nvar mat3 = require(\"./mat3.js\");\nvar vec3 = require(\"./vec3.js\");\nvar vec4 = require(\"./vec4.js\");\n\n/**\n * @class Quaternion\n * @name quat\n */\nvar quat = {};\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\nquat.create = function() {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n};\n\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {vec3} a the initial vector\n * @param {vec3} b the destination vector\n * @returns {quat} out\n */\nquat.rotationTo = (function() {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1,0,0);\n var yUnitVec3 = vec3.fromValues(0,1,0);\n\n return function(out, a, b) {\n var dot = vec3.dot(a, b);\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.length(tmpvec3) < 0.000001)\n vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n quat.setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return quat.normalize(out, out);\n }\n };\n})();\n\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {vec3} view the vector representing the viewing direction\n * @param {vec3} right the vector representing the local \"right\" direction\n * @param {vec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\nquat.setAxes = (function() {\n var matr = mat3.create();\n\n return function(out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n\n return quat.normalize(out, quat.fromMat3(out, matr));\n };\n})();\n\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {quat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\nquat.clone = vec4.clone;\n\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\nquat.fromValues = vec4.fromValues;\n\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the source quaternion\n * @returns {quat} out\n * @function\n */\nquat.copy = vec4.copy;\n\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\nquat.set = vec4.set;\n\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nquat.identity = function(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n};\n\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {vec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\nquat.setAxisAngle = function(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n};\n\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n * @function\n */\nquat.add = vec4.add;\n\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n */\nquat.multiply = function(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = b[0], by = b[1], bz = b[2], bw = b[3];\n\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n};\n\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\nquat.mul = quat.multiply;\n\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {quat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\nquat.scale = vec4.scale;\n\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nquat.rotateX = function (out, a, rad) {\n rad *= 0.5; \n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = Math.sin(rad), bw = Math.cos(rad);\n\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n};\n\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nquat.rotateY = function (out, a, rad) {\n rad *= 0.5; \n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n by = Math.sin(rad), bw = Math.cos(rad);\n\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n};\n\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nquat.rotateZ = function (out, a, rad) {\n rad *= 0.5; \n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bz = Math.sin(rad), bw = Math.cos(rad);\n\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n};\n\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate W component of\n * @returns {quat} out\n */\nquat.calculateW = function (out, a) {\n var x = a[0], y = a[1], z = a[2];\n\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n};\n\n/**\n * Calculates the dot product of two quat's\n *\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nquat.dot = vec4.dot;\n\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n * @function\n */\nquat.lerp = vec4.lerp;\n\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {quat} out\n */\nquat.slerp = function (out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n\n var ax = a[0], ay = a[1], az = a[2], aw = a[3],\n bx = b[0], by = b[1], bz = b[2], bw = b[3];\n\n var omega, cosom, sinom, scale0, scale1;\n\n // calc cosine\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n // adjust signs (if necessary)\n if ( cosom < 0.0 ) {\n cosom = -cosom;\n bx = - bx;\n by = - by;\n bz = - bz;\n bw = - bw;\n }\n // calculate coefficients\n if ( (1.0 - cosom) > 0.000001 ) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else { \n // \"from\" and \"to\" quaternions are very close \n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n }\n // calculate final values\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n \n return out;\n};\n\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {quat} c the third operand\n * @param {quat} d the fourth operand\n * @param {Number} t interpolation amount\n * @returns {quat} out\n */\nquat.sqlerp = (function () {\n var temp1 = quat.create();\n var temp2 = quat.create();\n \n return function (out, a, b, c, d, t) {\n quat.slerp(temp1, a, d, t);\n quat.slerp(temp2, b, c, t);\n quat.slerp(out, temp1, temp2, 2 * t * (1 - t));\n \n return out;\n };\n}());\n\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate inverse of\n * @returns {quat} out\n */\nquat.invert = function(out, a) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3],\n dot = a0*a0 + a1*a1 + a2*a2 + a3*a3,\n invDot = dot ? 1.0/dot : 0;\n \n // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0*invDot;\n out[1] = -a1*invDot;\n out[2] = -a2*invDot;\n out[3] = a3*invDot;\n return out;\n};\n\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate conjugate of\n * @returns {quat} out\n */\nquat.conjugate = function (out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n};\n\n/**\n * Calculates the length of a quat\n *\n * @param {quat} a vector to calculate length of\n * @returns {Number} length of a\n * @function\n */\nquat.length = vec4.length;\n\n/**\n * Alias for {@link quat.length}\n * @function\n */\nquat.len = quat.length;\n\n/**\n * Calculates the squared length of a quat\n *\n * @param {quat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\nquat.squaredLength = vec4.squaredLength;\n\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\nquat.sqrLen = quat.squaredLength;\n\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\nquat.normalize = vec4.normalize;\n\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {mat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\nquat.fromMat3 = function(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if ( fTrace > 0.0 ) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n out[3] = 0.5 * fRoot;\n fRoot = 0.5/fRoot; // 1/(4w)\n out[0] = (m[5]-m[7])*fRoot;\n out[1] = (m[6]-m[2])*fRoot;\n out[2] = (m[1]-m[3])*fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if ( m[4] > m[0] )\n i = 1;\n if ( m[8] > m[i*3+i] )\n i = 2;\n var j = (i+1)%3;\n var k = (i+2)%3;\n \n fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j*3+k] - m[k*3+j]) * fRoot;\n out[j] = (m[j*3+i] + m[i*3+j]) * fRoot;\n out[k] = (m[k*3+i] + m[i*3+k]) * fRoot;\n }\n \n return out;\n};\n\n/**\n * Returns a string representation of a quatenion\n *\n * @param {quat} vec vector to represent as a string\n * @returns {String} string representation of the vector\n */\nquat.str = function (a) {\n return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')';\n};\n\nmodule.exports = quat;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/quat.js\n// module id = 84\n// module chunks = 0","/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE. */\n\nvar glMatrix = require(\"./common.js\");\n\n/**\n * @class 2 Dimensional Vector\n * @name vec2\n */\nvar vec2 = {};\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\nvec2.create = function() {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = 0;\n out[1] = 0;\n return out;\n};\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nvec2.clone = function(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n};\n\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\nvec2.fromValues = function(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n};\n\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the source vector\n * @returns {vec2} out\n */\nvec2.copy = function(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n};\n\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\nvec2.set = function(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n};\n\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.add = function(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n};\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.subtract = function(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n};\n\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\nvec2.sub = vec2.subtract;\n\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.multiply = function(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n};\n\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\nvec2.mul = vec2.multiply;\n\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.divide = function(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n};\n\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\nvec2.div = vec2.divide;\n\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.min = function(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n};\n\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nvec2.max = function(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n};\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nvec2.scale = function(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n};\n\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\nvec2.scaleAndAdd = function(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale);\n out[1] = a[1] + (b[1] * scale);\n return out;\n};\n\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} distance between a and b\n */\nvec2.distance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.sqrt(x*x + y*y);\n};\n\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\nvec2.dist = vec2.distance;\n\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\nvec2.squaredDistance = function(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x*x + y*y;\n};\n\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\nvec2.sqrDist = vec2.squaredDistance;\n\n/**\n * Calculates the length of a vec2\n *\n * @param {vec2} a vector to calculate length of\n * @returns {Number} length of a\n */\nvec2.length = function (a) {\n var x = a[0],\n y = a[1];\n return Math.sqrt(x*x + y*y);\n};\n\n/**\n * Alias for {@link vec2.length}\n * @function\n */\nvec2.len = vec2.length;\n\n/**\n * Calculates the squared length of a vec2\n *\n * @param {vec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nvec2.squaredLength = function (a) {\n var x = a[0],\n y = a[1];\n return x*x + y*y;\n};\n\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\nvec2.sqrLen = vec2.squaredLength;\n\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */\nvec2.negate = function(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n};\n\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to invert\n * @returns {vec2} out\n */\nvec2.inverse = function(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n};\n\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to normalize\n * @returns {vec2} out\n */\nvec2.normalize = function(out, a) {\n var x = a[0],\n y = a[1];\n var len = x*x + y*y;\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n }\n return out;\n};\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nvec2.dot = function (a, b) {\n return a[0] * b[0] + a[1] * b[1];\n};\n\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec3} out\n */\nvec2.cross = function(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n};\n\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec2} out\n */\nvec2.lerp = function (out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n};\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\nvec2.random = function (out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n};\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nvec2.transformMat2 = function(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n};\n\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2d} m matrix to transform with\n * @returns {vec2} out\n */\nvec2.transformMat2d = function(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n};\n\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat3} m matrix to transform with\n * @returns {vec2} out\n */\nvec2.transformMat3 = function(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n};\n\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */\nvec2.transformMat4 = function(out, a, m) {\n var x = a[0], \n y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n};\n\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nvec2.forEach = (function() {\n var vec = vec2.create();\n\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if(!stride) {\n stride = 2;\n }\n\n if(!offset) {\n offset = 0;\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length);\n } else {\n l = a.length;\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i]; vec[1] = a[i+1];\n fn(vec, vec, arg);\n a[i] = vec[0]; a[i+1] = vec[1];\n }\n \n return a;\n };\n})();\n\n/**\n * Returns a string representation of a vector\n *\n * @param {vec2} vec vector to represent as a string\n * @returns {String} string representation of the vector\n */\nvec2.str = function (a) {\n return 'vec2(' + a[0] + ', ' + a[1] + ')';\n};\n\nmodule.exports = vec2;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/gl-matrix/src/gl-matrix/vec2.js\n// module id = 85\n// module chunks = 0","/*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n/*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/*jslint browser: true, node: true */\n/*global require, module */\n\n\"use strict\";\n\n/*** Imports ***/\nvar jpeg = jpeg || {};\njpeg.lossless = jpeg.lossless || {};\njpeg.lossless.DataStream = jpeg.lossless.DataStream || ((typeof require !== 'undefined') ? require('./data-stream.js') : null);\njpeg.lossless.HuffmanTable = jpeg.lossless.HuffmanTable || ((typeof require !== 'undefined') ? require('./huffman-table.js') : null);\njpeg.lossless.QuantizationTable = jpeg.lossless.QuantizationTable || ((typeof require !== 'undefined') ? require('./quantization-table.js') : null);\njpeg.lossless.ScanHeader = jpeg.lossless.ScanHeader || ((typeof require !== 'undefined') ? require('./scan-header.js') : null);\njpeg.lossless.FrameHeader = jpeg.lossless.FrameHeader || ((typeof require !== 'undefined') ? require('./frame-header.js') : null);\njpeg.lossless.Utils = jpeg.lossless.Utils || ((typeof require !== 'undefined') ? require('./utils.js') : null);\n\n\n/*** Constructor ***/\n\n/**\n * The Decoder constructor.\n * @property {number} xDim - size of x dimension\n * @property {number} yDim - size of y dimension\n * @property {number} numComp - number of components\n * @property {number} numBytes - number of bytes per component\n * @type {Function}\n */\njpeg.lossless.Decoder = jpeg.lossless.Decoder || function (buffer, numBytes) {\n this.buffer = buffer;\n this.frame = new jpeg.lossless.FrameHeader();\n this.huffTable = new jpeg.lossless.HuffmanTable();\n this.quantTable = new jpeg.lossless.QuantizationTable();\n this.scan = new jpeg.lossless.ScanHeader();\n this.DU = jpeg.lossless.Utils.createArray(10, 4, 64); // at most 10 data units in a MCU, at most 4 data units in one component\n this.HuffTab = jpeg.lossless.Utils.createArray(4, 2, 50 * 256);\n this.IDCT_Source = [];\n this.nBlock = []; // number of blocks in the i-th Comp in a scan\n this.acTab = jpeg.lossless.Utils.createArray(10, 1); // ac HuffTab for the i-th Comp in a scan\n this.dcTab = jpeg.lossless.Utils.createArray(10, 1); // dc HuffTab for the i-th Comp in a scan\n this.qTab = jpeg.lossless.Utils.createArray(10, 1); // quantization table for the i-th Comp in a scan\n this.marker = 0;\n this.markerIndex = 0;\n this.numComp = 0;\n this.restartInterval = 0;\n this.selection = 0;\n this.xDim = 0;\n this.yDim = 0;\n this.xLoc = 0;\n this.yLoc = 0;\n this.numBytes = 0;\n this.outputData = null;\n this.restarting = false;\n this.mask = 0;\n\n if (typeof numBytes !== \"undefined\") {\n this.numBytes = numBytes;\n }\n};\n\n\n/*** Static Pseudo-constants ***/\n\njpeg.lossless.Decoder.IDCT_P = [0, 5, 40, 16, 45, 2, 7, 42, 21, 56, 8, 61, 18, 47, 1, 4, 41, 23, 58, 13, 32, 24, 37, 10, 63, 17, 44, 3, 6, 43, 20,\n 57, 15, 34, 29, 48, 53, 26, 39, 9, 60, 19, 46, 22, 59, 12, 33, 31, 50, 55, 25, 36, 11, 62, 14, 35, 28, 49, 52, 27, 38, 30, 51, 54];\njpeg.lossless.Decoder.TABLE = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\njpeg.lossless.Decoder.MAX_HUFFMAN_SUBTREE = 50;\njpeg.lossless.Decoder.MSB = 0x80000000;\njpeg.lossless.Decoder.RESTART_MARKER_BEGIN = 0xFFD0;\njpeg.lossless.Decoder.RESTART_MARKER_END = 0xFFD7;\n\n/*** Prototype Methods ***/\n\n/**\n * Returns decompressed data.\n * @param {ArrayBuffer} buffer\n * @param {number} [offset]\n * @param {number} [length]\n * @returns {ArrayBufer}\n */\njpeg.lossless.Decoder.prototype.decompress = function (buffer, offset, length) {\n return this.decode(buffer, offset, length).buffer;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decode = function (buffer, offset, length, numBytes) {\n /*jslint bitwise: true */\n\n var current, scanNum = 0, pred = [], i, compN, temp = [], index = [], mcuNum;\n\n if (typeof buffer !== \"undefined\") {\n this.buffer = buffer;\n }\n\n if (typeof numBytes !== \"undefined\") {\n this.numBytes = numBytes;\n }\n\n this.stream = new jpeg.lossless.DataStream(this.buffer, offset, length);\n this.buffer = null;\n\n this.xLoc = 0;\n this.yLoc = 0;\n current = this.stream.get16();\n\n if (current !== 0xFFD8) { // SOI\n throw new Error(\"Not a JPEG file\");\n }\n\n current = this.stream.get16();\n\n while ((((current >> 4) !== 0x0FFC) || (current === 0xFFC4))) { // SOF 0~15\n switch (current) {\n case 0xFFC4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xFFCC: // DAC\n throw new Error(\"Program doesn't support arithmetic coding. (format throw new IOException)\");\n case 0xFFDB:\n this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);\n break;\n case 0xFFDD:\n this.restartInterval = this.readNumber();\n break;\n case 0xFFE0:\n case 0xFFE1:\n case 0xFFE2:\n case 0xFFE3:\n case 0xFFE4:\n case 0xFFE5:\n case 0xFFE6:\n case 0xFFE7:\n case 0xFFE8:\n case 0xFFE9:\n case 0xFFEA:\n case 0xFFEB:\n case 0xFFEC:\n case 0xFFED:\n case 0xFFEE:\n case 0xFFEF:\n this.readApp();\n break;\n case 0xFFFE:\n this.readComment();\n break;\n default:\n if ((current >> 8) !== 0xFF) {\n throw new Error(\"ERROR: format throw new IOException! (decode)\");\n }\n }\n\n current = this.stream.get16();\n }\n\n if ((current < 0xFFC0) || (current > 0xFFC7)) {\n throw new Error(\"ERROR: could not handle arithmetic code!\");\n }\n\n this.frame.read(this.stream);\n current = this.stream.get16();\n\n do {\n while (current !== 0x0FFDA) { // SOS\n switch (current) {\n case 0xFFC4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xFFCC: // DAC\n throw new Error(\"Program doesn't support arithmetic coding. (format throw new IOException)\");\n case 0xFFDB:\n this.quantTable.read(this.stream, jpeg.lossless.Decoder.TABLE);\n break;\n case 0xFFDD:\n this.restartInterval = this.readNumber();\n break;\n case 0xFFE0:\n case 0xFFE1:\n case 0xFFE2:\n case 0xFFE3:\n case 0xFFE4:\n case 0xFFE5:\n case 0xFFE6:\n case 0xFFE7:\n case 0xFFE8:\n case 0xFFE9:\n case 0xFFEA:\n case 0xFFEB:\n case 0xFFEC:\n case 0xFFED:\n case 0xFFEE:\n case 0xFFEF:\n this.readApp();\n break;\n case 0xFFFE:\n this.readComment();\n break;\n default:\n if ((current >> 8) !== 0xFF) {\n throw new Error(\"ERROR: format throw new IOException! (Parser.decode)\");\n }\n }\n\n current = this.stream.get16();\n }\n\n this.precision = this.frame.precision;\n this.components = this.frame.components;\n\n if (!this.numBytes) {\n this.numBytes = parseInt(Math.ceil(this.precision / 8));\n }\n\n if (this.numBytes == 1) {\n this.mask = 0xFF;\n } else {\n this.mask = 0xFFFF;\n }\n\n this.scan.read(this.stream);\n this.numComp = this.scan.numComp;\n this.selection = this.scan.selection;\n\n if (this.numBytes === 1) {\n if (this.numComp === 3) {\n this.getter = this.getValueRGB;\n this.setter = this.setValueRGB;\n this.output = this.outputRGB;\n } else {\n this.getter = this.getValue8;\n this.setter = this.setValue8;\n this.output = this.outputSingle;\n }\n } else {\n this.getter = this.getValue16;\n this.setter = this.setValue16;\n this.output = this.outputSingle;\n }\n\n switch (this.selection) {\n case 2:\n this.selector = this.select2;\n break;\n case 3:\n this.selector = this.select3;\n break;\n case 4:\n this.selector = this.select4;\n break;\n case 5:\n this.selector = this.select5;\n break;\n case 6:\n this.selector = this.select6;\n break;\n case 7:\n this.selector = this.select7;\n break;\n default:\n this.selector = this.select1;\n break;\n }\n\n this.scanComps = this.scan.components;\n this.quantTables = this.quantTable.quantTables;\n\n for (i = 0; i < this.numComp; i+=1) {\n compN = this.scanComps[i].scanCompSel;\n this.qTab[i] = this.quantTables[this.components[compN].quantTableSel];\n this.nBlock[i] = this.components[compN].vSamp * this.components[compN].hSamp;\n this.dcTab[i] = this.HuffTab[this.scanComps[i].dcTabSel][0];\n this.acTab[i] = this.HuffTab[this.scanComps[i].acTabSel][1];\n }\n\n this.xDim = this.frame.dimX;\n this.yDim = this.frame.dimY;\n if (this.numBytes == 1) {\n this.outputData = new Uint8Array(new ArrayBuffer(this.xDim * this.yDim * this.numBytes * this.numComp));\n } else {\n this.outputData = new Uint16Array(new ArrayBuffer(this.xDim * this.yDim * this.numBytes * this.numComp));\n }\n\n scanNum+=1;\n\n while (true) { // Decode one scan\n temp[0] = 0;\n index[0] = 0;\n\n for (i = 0; i < 10; i+=1) {\n pred[i] = (1 << (this.precision - 1));\n }\n\n if (this.restartInterval === 0) {\n current = this.decodeUnit(pred, temp, index);\n\n while ((current === 0) && ((this.xLoc < this.xDim) && (this.yLoc < this.yDim))) {\n this.output(pred);\n current = this.decodeUnit(pred, temp, index);\n }\n\n break; //current=MARKER\n }\n\n for (mcuNum = 0; mcuNum < this.restartInterval; mcuNum+=1) {\n this.restarting = (mcuNum == 0);\n current = this.decodeUnit(pred, temp, index);\n this.output(pred);\n\n if (current !== 0) {\n break;\n }\n }\n\n if (current === 0) {\n if (this.markerIndex !== 0) {\n current = (0xFF00 | this.marker);\n this.markerIndex = 0;\n } else {\n current = this.stream.get16();\n }\n }\n\n if (!((current >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN) &&\n (current <= jpeg.lossless.Decoder.RESTART_MARKER_END))) {\n break; //current=MARKER\n }\n }\n\n if ((current === 0xFFDC) && (scanNum === 1)) { //DNL\n this.readNumber();\n current = this.stream.get16();\n }\n } while ((current !== 0xFFD9) && ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) && (scanNum === 0));\n\n return this.outputData;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeUnit = function (prev, temp, index) {\n if (this.numComp == 1) {\n return this.decodeSingle(prev, temp, index);\n } else if (this.numComp == 3) {\n return this.decodeRGB(prev, temp, index);\n } else {\n return -1;\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.select1 = function (compOffset) {\n return this.getPreviousX(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select2 = function (compOffset) {\n return this.getPreviousY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select3 = function (compOffset) {\n return this.getPreviousXY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select4 = function (compOffset) {\n return (this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) - this.getPreviousXY(compOffset);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select5 = function (compOffset) {\n return this.getPreviousX(compOffset) + ((this.getPreviousY(compOffset) - this.getPreviousXY(compOffset)) >> 1);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select6 = function (compOffset) {\n return this.getPreviousY(compOffset) + ((this.getPreviousX(compOffset) - this.getPreviousXY(compOffset)) >> 1);\n};\n\n\n\njpeg.lossless.Decoder.prototype.select7 = function (compOffset) {\n return ((this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) / 2);\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeRGB = function (prev, temp, index) {\n /*jslint bitwise: true */\n\n var value, actab, dctab, qtab, ctrC, i, k, j;\n\n prev[0] = this.selector(0);\n prev[1] = this.selector(1);\n prev[2] = this.selector(2);\n\n for (ctrC = 0; ctrC < this.numComp; ctrC+=1) {\n qtab = this.qTab[ctrC];\n actab = this.acTab[ctrC];\n dctab = this.dcTab[ctrC];\n for (i = 0; i < this.nBlock[ctrC]; i+=1) {\n for (k = 0; k < this.IDCT_Source.length; k+=1) {\n this.IDCT_Source[k] = 0;\n }\n\n value = this.getHuffmanValue(dctab, temp, index);\n\n if (value >= 0xFF00) {\n return value;\n }\n\n prev[ctrC] = this.IDCT_Source[0] = prev[ctrC] + this.getn(index, value, temp, index);\n this.IDCT_Source[0] *= qtab[0];\n\n for (j = 1; j < 64; j+=1) {\n value = this.getHuffmanValue(actab, temp, index);\n\n if (value >= 0xFF00) {\n return value;\n }\n\n j += (value >> 4);\n\n if ((value & 0x0F) === 0) {\n if ((value >> 4) === 0) {\n break;\n }\n } else {\n this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]] = this.getn(index, value & 0x0F, temp, index) * qtab[j];\n }\n }\n }\n }\n\n return 0;\n};\n\n\n\njpeg.lossless.Decoder.prototype.decodeSingle = function (prev, temp, index) {\n /*jslint bitwise: true */\n\n var value, i, n, nRestart;\n\n if (this.restarting) {\n this.restarting = false;\n prev[0] = (1 << (this.frame.precision - 1));\n } else {\n prev[0] = this.selector();\n }\n\n for (i = 0; i < this.nBlock[0]; i+=1) {\n value = this.getHuffmanValue(this.dcTab[0], temp, index);\n if (value >= 0xFF00) {\n return value;\n }\n\n n = this.getn(prev, value, temp, index);\n nRestart = (n >> 8);\n\n if ((nRestart >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN) && (nRestart <= jpeg.lossless.Decoder.RESTART_MARKER_END)) {\n return nRestart;\n }\n\n prev[0] += n;\n }\n\n return 0;\n};\n\n\n\n//\tHuffman table for fast search: (HuffTab) 8-bit Look up table 2-layer search architecture, 1st-layer represent 256 node (8 bits) if codeword-length > 8\n//\tbits, then the entry of 1st-layer = (# of 2nd-layer table) | MSB and it is stored in the 2nd-layer Size of tables in each layer are 256.\n//\tHuffTab[*][*][0-256] is always the only 1st-layer table.\n//\n//\tAn entry can be: (1) (# of 2nd-layer table) | MSB , for code length > 8 in 1st-layer (2) (Code length) << 8 | HuffVal\n//\n//\tHuffmanValue(table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n//\t ):\n//\t return: Huffman Value of table\n//\t 0xFF?? if it receives a MARKER\n//\t Parameter: table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n//\t temp temp storage for remainded bits\n//\t index index to bit of temp\n//\t in FILE pointer\n//\t Effect:\n//\t temp store new remainded bits\n//\t index change to new index\n//\t in change to new position\n//\t NOTE:\n//\t Initial by temp=0; index=0;\n//\t NOTE: (explain temp and index)\n//\t temp: is always in the form at calling time or returning time\n//\t | byte 4 | byte 3 | byte 2 | byte 1 |\n//\t | 0 | 0 | 00000000 | 00000??? | if not a MARKER\n//\t ^index=3 (from 0 to 15)\n//\t 321\n//\t NOTE (marker and marker_index):\n//\t If get a MARKER from 'in', marker=the low-byte of the MARKER\n//\t and marker_index=9\n//\t If marker_index=9 then index is always > 8, or HuffmanValue()\n//\t will not be called\njpeg.lossless.Decoder.prototype.getHuffmanValue = function (table, temp, index) {\n /*jslint bitwise: true */\n\n var code, input, mask;\n mask = 0xFFFF;\n\n if (index[0] < 8) {\n temp[0] <<= 8;\n input = this.stream.get8();\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n temp[0] |= input;\n } else {\n index[0] -= 8;\n }\n\n code = table[temp[0] >> index[0]];\n\n if ((code & jpeg.lossless.Decoder.MSB) !== 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n return 0xFF00 | this.marker;\n }\n\n temp[0] &= (mask >> (16 - index[0]));\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n code = table[((code & 0xFF) * 256) + (temp[0] >> index[0])];\n index[0] += 8;\n }\n\n index[0] += 8 - (code >> 8);\n\n if (index[0] < 0) {\n throw new Error(\"index=\" + index[0] + \" temp=\" + temp[0] + \" code=\" + code + \" in HuffmanValue()\");\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n return 0xFF00 | this.marker;\n }\n\n temp[0] &= (mask >> (16 - index[0]));\n return code & 0xFF;\n};\n\n\n\njpeg.lossless.Decoder.prototype.getn = function (PRED, n, temp, index) {\n /*jslint bitwise: true */\n\n var result, one, n_one, mask, input;\n one = 1;\n n_one = -1;\n mask = 0xFFFF;\n\n if (n === 0) {\n return 0;\n }\n\n if (n === 16) {\n if (PRED[0] >= 0) {\n return -32768;\n } else {\n return 32768;\n }\n }\n\n index[0] -= n;\n\n if (index[0] >= 0) {\n if ((index[0] < this.markerIndex) && !this.isLastPixel()) { // this was corrupting the last pixel in some cases\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= (mask >> (16 - index[0]));\n } else {\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n\n if (index[0] < 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xFF) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n }\n\n if (index[0] < 0) {\n throw new Error(\"index=\" + index[0] + \" in getn()\");\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n return (0xFF00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= (mask >> (16 - index[0]));\n }\n\n if (result < (one << (n - 1))) {\n result += (n_one << n) + 1;\n }\n\n return result;\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousX = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.xLoc > 0) {\n return this.getter((((this.yLoc * this.xDim) + this.xLoc) - 1), compOffset);\n } else if (this.yLoc > 0) {\n return this.getPreviousY(compOffset);\n } else {\n return (1 << (this.frame.precision - 1));\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousXY = function (compOffset) {\n /*jslint bitwise: true */\n\n if ((this.xLoc > 0) && (this.yLoc > 0)) {\n return this.getter(((((this.yLoc - 1) * this.xDim) + this.xLoc) - 1), compOffset);\n } else {\n return this.getPreviousY(compOffset);\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.getPreviousY = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.yLoc > 0) {\n return this.getter((((this.yLoc - 1) * this.xDim) + this.xLoc), compOffset);\n } else {\n return this.getPreviousX(compOffset);\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.isLastPixel = function () {\n return (this.xLoc === (this.xDim - 1)) && (this.yLoc === (this.yDim - 1));\n};\n\n\n\njpeg.lossless.Decoder.prototype.outputSingle = function (PRED) {\n if ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) {\n this.setter((((this.yLoc * this.xDim) + this.xLoc)), this.mask & PRED[0]);\n\n this.xLoc+=1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc+=1;\n this.xLoc = 0;\n }\n }\n};\n\n\n\njpeg.lossless.Decoder.prototype.outputRGB = function (PRED) {\n var offset = ((this.yLoc * this.xDim) + this.xLoc);\n\n if ((this.xLoc < this.xDim) && (this.yLoc < this.yDim)) {\n this.setter(offset, PRED[0], 0);\n this.setter(offset, PRED[1], 1);\n this.setter(offset, PRED[2], 2);\n\n this.xLoc+=1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc+=1;\n this.xLoc = 0;\n }\n }\n};\n\njpeg.lossless.Decoder.prototype.setValue8 = function (index, val) {\n this.outputData[index] = val; \n};\n\njpeg.lossless.Decoder.prototype.getValue8 = function (index) {\n return this.outputData[index]; // mask should not be necessary because outputData is either Int8Array or Int16Array\n};\n\nvar littleEndian = (function() {\n var buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] === 256;\n})();\n\nif (littleEndian) {\n // just reading from an array is fine then. Int16Array will use platform endianness.\n jpeg.lossless.Decoder.prototype.setValue16 = jpeg.lossless.Decoder.prototype.setValue8; \n jpeg.lossless.Decoder.prototype.getValue16 = jpeg.lossless.Decoder.prototype.getValue8;\n} \nelse {\n // If platform is big-endian, we will need to convert to little-endian \n jpeg.lossless.Decoder.prototype.setValue16 = function (index, val) {\n this.outputData[index] = ((val & 0xFF) << 8) | ((val >> 8) & 0xFF); \n };\n\n jpeg.lossless.Decoder.prototype.getValue16 = function (index) {\n var val = this.outputData[index];\n return ((val & 0xFF) << 8) | ((val >> 8) & 0xFF);\n };\n}\n\njpeg.lossless.Decoder.prototype.setValueRGB = function (index, val, compOffset) {\n // this.outputData.setUint8(index * 3 + compOffset, val);\n this.outputData[index * 3 + compOffset] = val;\n};\n\njpeg.lossless.Decoder.prototype.getValueRGB = function (index, compOffset) {\n // return this.outputData.getUint8(index * 3 + compOffset);\n return this.outputData[index * 3 + compOffset];\n};\n\n\n\njpeg.lossless.Decoder.prototype.readApp = function() {\n var count = 0, length = this.stream.get16();\n count += 2;\n\n while (count < length) {\n this.stream.get8();\n count+=1;\n }\n\n return length;\n};\n\n\n\njpeg.lossless.Decoder.prototype.readComment = function () {\n var sb = \"\", count = 0, length;\n\n length = this.stream.get16();\n count += 2;\n\n while (count < length) {\n sb += this.stream.get8();\n count+=1;\n }\n\n return sb;\n};\n\n\n\njpeg.lossless.Decoder.prototype.readNumber = function() {\n var Ld = this.stream.get16();\n\n if (Ld !== 4) {\n throw new Error(\"ERROR: Define number format throw new IOException [Ld!=4]\");\n }\n\n return this.stream.get16();\n};\n\n\n\n/*** Exports ***/\n\nvar moduleType = typeof module;\nif ((moduleType !== 'undefined') && module.exports) {\n module.exports = jpeg.lossless.Decoder;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/jpeg-lossless-decoder-js/src/decoder.js\n// module id = 86\n// module chunks = 0","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/deflate.js\n// module id = 87\n// module chunks = 0","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/inflate.js\n// module id = 88\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/deflate.js\n// module id = 89\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/gzheader.js\n// module id = 90\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/inffast.js\n// module id = 91\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/inflate.js\n// module id = 92\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/inftrees.js\n// module id = 93\n// module chunks = 0","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/pako/lib/zlib/trees.js\n// module id = 94\n// module chunks = 0","// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/index.js\n// module id = 95\n// module chunks = 0","// A port of an algorithm by Johannes Baagøe , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/alea.js\n// module id = 96\n// module chunks = 0","// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/tychei.js\n// module id = 97\n// module chunks = 0","// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/xor128.js\n// module id = 98\n// module chunks = 0","// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/xor4096.js\n// module id = 99\n// module chunks = 0","// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/xorshift7.js\n// module id = 100\n// module chunks = 0","// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/lib/xorwow.js\n// module id = 101\n// module chunks = 0","/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/seedrandom/seedrandom.js\n// module id = 102\n// module chunks = 0","import _ from 'underscore';\nimport daikon from 'daikon';\nimport vtkImageSlice from 'vtk.js/Sources/Rendering/Core/ImageSlice';\nimport vtkImageData from 'vtk.js/Sources/Common/DataModel/ImageData';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkImageMapper from 'vtk.js/Sources/Rendering/Core/ImageMapper';\nimport vtkInteractorStyleImage from 'vtk.js/Sources/Interaction/Style/InteractorStyleImage';\nimport vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';\nimport vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer';\nimport vtkRenderWindow from 'vtk.js/Sources/Rendering/Core/RenderWindow';\nimport vtkRenderWindowInteractor from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor';\n\nimport { restRequest } from '@girder/core/rest';\nimport FileModel from '@girder/core/models/FileModel';\nimport FileCollection from '@girder/core/collections/FileCollection';\nimport View from '@girder/core/views/View';\n\nimport DicomItemTemplate from '../templates/dicomItem.pug';\nimport '../stylesheets/dicomItem.styl';\nimport DicomSliceMetadataTemplate from '../templates/dicomSliceMetadata.pug';\nimport '../stylesheets/dicomSliceMetadata.styl';\n\nconst DicomFileModel = FileModel.extend({\n getSlice: function () {\n if (!this._slice) {\n // Cache the slice on the model\n this._slice = restRequest({\n url: `file/${this.id}/download`,\n xhrFields: {\n responseType: 'arraybuffer'\n }\n })\n .then((resp) => {\n const dataView = new DataView(resp);\n return daikon.Series.parseImage(dataView);\n });\n }\n return this._slice;\n }\n});\n\nconst DicomFileCollection = FileCollection.extend({\n model: DicomFileModel,\n\n initialize: function () {\n FileCollection.prototype.initialize.apply(this, arguments);\n\n this._selectedIndex = null;\n },\n\n sortField: 'none',\n\n selectIndex: function (index) {\n this._selectedIndex = index;\n this.trigger('g:selected', this.at(index), index);\n },\n\n selectNext: function () {\n let newIndex = this._selectedIndex + 1;\n if (newIndex >= this.length) {\n newIndex = 0;\n }\n this.selectIndex(newIndex);\n },\n\n selectPrevious: function () {\n let newIndex = this._selectedIndex - 1;\n if (newIndex < 0) {\n newIndex = this.length - 1;\n }\n this.selectIndex(newIndex);\n },\n\n selectFirst: function () {\n this.selectIndex(0);\n },\n\n selectLast: function () {\n this.selectIndex(this.length - 1);\n }\n});\n\nconst DicomSliceMetadataWidget = View.extend({\n className: 'g-dicom-tags',\n\n initialize: function (settings) {\n this._slice = null;\n },\n\n /**\n * Set the slice to use.\n *\n * `render` should typically be called afterwards.\n *\n * @param {daikon.Image} slice\n */\n setSlice: function (slice) {\n this._slice = slice;\n return this;\n },\n\n /**\n * Do a full render.\n *\n * May be called without calling `setSlice` first.\n */\n render: function () {\n this.$el.html(DicomSliceMetadataTemplate({\n tags: this._slice ? this._getSliceTags() : []\n }));\n return this;\n },\n\n _getSliceTags: function () {\n let tags;\n if (!DicomSliceMetadataWidget.tagCache.has(this._slice)) {\n tags = this._extractSliceTags();\n DicomSliceMetadataWidget.tagCache.set(this._slice, tags);\n } else {\n return DicomSliceMetadataWidget.tagCache.get(this._slice);\n }\n return tags;\n },\n\n _extractSliceTags: function () {\n return _.chain(this._slice.tags)\n .filter((tag) => {\n // Redact tags that have unprintable values\n return (\n !tag.sublist &&\n tag.vr !== 'SQ' &&\n !tag.isPixelData() &&\n tag.value &&\n tag.value.toString() !== '[object DataView]'\n );\n })\n .map((tag) => {\n // Transform to a list of tag (name / value) objects\n return {\n name: daikon.Dictionary.getDescription(tag.group, tag.element),\n value: tag.value\n };\n })\n .filter((tag) => {\n // Redact private and meta-tag tags\n return (\n tag.name !== 'PrivateData' &&\n !(tag.name.startsWith('Group') && tag.name.endsWith('Length'))\n );\n })\n .sortBy((tag) => {\n return tag.name.toLowerCase();\n })\n .value();\n }\n}, {\n tagCache: new WeakMap()\n});\n\nconst DicomSliceImageWidget = View.extend({\n className: 'g-dicom-image',\n\n initialize: function (settings) {\n this._slice = null;\n this.vtk = {\n renderer: null,\n actor: null,\n camera: null,\n interactor: null\n };\n },\n\n destroy: function () {\n if (this.vtk.interactor) {\n this.vtk.interactor.unbindEvents(this.el);\n }\n View.prototype.destroy.apply(this, arguments);\n },\n\n /**\n * Set the slice to use.\n *\n * `render` or `rerenderSlice` should typically be called afterwards.\n *\n * @param {daikon.Image} slice\n */\n setSlice: function (slice) {\n this._slice = slice;\n return this;\n },\n\n /**\n * Do a full render.\n *\n * May be called without calling `setSlice` first.\n */\n render: function () {\n this.vtk.renderer = vtkRenderer.newInstance();\n this.vtk.renderer.setBackground(0.33, 0.33, 0.33);\n\n const renWin = vtkRenderWindow.newInstance();\n renWin.addRenderer(this.vtk.renderer);\n\n const glWin = vtkOpenGLRenderWindow.newInstance();\n glWin.setContainer(this.el);\n glWin.setSize(512, 512);\n renWin.addView(glWin);\n\n this.vtk.interactor = vtkRenderWindowInteractor.newInstance();\n const style = vtkInteractorStyleImage.newInstance();\n this.vtk.interactor.setInteractorStyle(style);\n this.vtk.interactor.setView(glWin);\n\n this.vtk.actor = vtkImageSlice.newInstance();\n this.vtk.renderer.addActor(this.vtk.actor);\n\n if (this._slice) {\n const mapper = vtkImageMapper.newInstance();\n mapper.setInputData(this._getImageData());\n this.vtk.actor.setMapper(mapper);\n }\n\n this.vtk.camera = this.vtk.renderer.getActiveCameraAndResetIfCreated();\n\n this.vtk.interactor.initialize();\n this.vtk.interactor.bindEvents(this.el);\n this.vtk.interactor.start();\n\n this.autoLevels(false);\n this.autoZoom(false);\n this.vtk.interactor.render();\n\n return this;\n },\n\n /**\n * Cheaply update the rendering, usually after `setSlice` is called.\n */\n rerenderSlice: function () {\n if (this.vtk.renderer) {\n if (this._slice) {\n const mapper = vtkImageMapper.newInstance();\n mapper.setInputData(this._getImageData());\n this.vtk.actor.setMapper(mapper);\n }\n this.vtk.interactor.render();\n } else {\n this.render();\n }\n return this;\n },\n\n /**\n * Requires `render` to be called first.\n */\n autoLevels: function (rerender = true) {\n const range = this._getImageData().getPointData().getScalars().getRange();\n const ww = range[1] - range[0];\n const wc = (range[0] + range[1]) / 2;\n this.vtk.actor.getProperty().setColorWindow(ww);\n this.vtk.actor.getProperty().setColorLevel(wc);\n\n if (rerender) {\n this.vtk.interactor.render();\n }\n return this;\n },\n\n /**\n * Requires `render` to be called first.\n */\n autoZoom: function (rerender = true) {\n this.vtk.renderer.resetCamera();\n this.vtk.camera.zoom(1.44);\n\n const up = [0, -1, 0];\n const pos = this.vtk.camera.getPosition();\n pos[2] = -Math.abs(pos[2]);\n this.vtk.camera.setViewUp(up[0], up[1], up[2]);\n this.vtk.camera.setPosition(pos[0], pos[1], pos[2]);\n\n if (rerender) {\n this.vtk.interactor.render();\n }\n return this;\n },\n\n /**\n * Requires `render` to be called first.\n */\n zoomIn: function () {\n this.vtk.camera.zoom(9 / 8);\n this.vtk.interactor.render();\n return this;\n },\n\n /**\n * Requires `render` to be called first.\n */\n zoomOut: function () {\n this.vtk.camera.zoom(8 / 9);\n this.vtk.interactor.render();\n return this;\n },\n\n _getImageData: function () {\n let tags;\n if (!DicomSliceImageWidget.imageDataCache.has(this._slice)) {\n tags = this._extractImageData();\n DicomSliceImageWidget.imageDataCache.set(this._slice, tags);\n } else {\n return DicomSliceImageWidget.imageDataCache.get(this._slice);\n }\n return tags;\n },\n\n _extractImageData: function () {\n const rows = this._slice.getRows();\n const cols = this._slice.getCols();\n const rowSpacing = this._slice.getPixelSpacing()[0];\n const colSpacing = this._slice.getPixelSpacing()[1];\n\n const imageData = vtkImageData.newInstance();\n imageData.setOrigin(0, 0, 0);\n imageData.setSpacing(colSpacing, rowSpacing, 1);\n imageData.setExtent(0, cols - 1, 0, rows - 1, 0, 0);\n\n const values = this._slice.getInterpretedData();\n const dataArray = vtkDataArray.newInstance({ values: values });\n imageData.getPointData().setScalars(dataArray);\n\n return imageData;\n }\n}, {\n imageDataCache: new WeakMap()\n});\n\nconst DicomItemView = View.extend({\n className: 'g-dicom-view',\n\n events: {\n 'input .g-dicom-slider': _.debounce(function (event) {\n this._files.selectIndex(parseInt(event.target.value));\n }, 10),\n 'click .g-dicom-first': function (event) {\n this._files.selectFirst();\n },\n 'click .g-dicom-previous': function (event) {\n this._files.selectPrevious();\n },\n 'click .g-dicom-play': function (event) {\n this.play();\n },\n 'click .g-dicom-pause': function (event) {\n this.pause();\n },\n 'click .g-dicom-next': function (event) {\n this._files.selectNext();\n },\n 'click .g-dicom-last': function (event) {\n this._files.selectLast();\n },\n 'click .g-dicom-zoom-in': function (event) {\n this._sliceImageView.zoomIn();\n },\n 'click .g-dicom-zoom-out': function (event) {\n this._sliceImageView.zoomOut();\n },\n 'click .g-dicom-reset-zoom': function (event) {\n this._sliceImageView.autoZoom();\n },\n 'click .g-dicom-auto-levels': function (event) {\n this._sliceImageView.autoLevels();\n }\n },\n\n /**\n *\n * @param {ItemModel} settings.item An item with its `dicom` attribute set.\n */\n initialize: function (settings) {\n this._files = new DicomFileCollection(settings.item.get('dicom').files);\n\n this._sliceMetadataView = null;\n this._sliceImageView = null;\n\n this._playing = false;\n this._playInterval = settings.playInterval || 500;\n\n this.listenTo(this._files, 'g:selected', this._onSelectionChanged);\n },\n\n render: function () {\n this.$el.html(DicomItemTemplate({\n files: this._files\n }));\n\n this._sliceMetadataView = new DicomSliceMetadataWidget({\n el: this.$('.g-dicom-tags'),\n parentView: this\n });\n this._sliceImageView = new DicomSliceImageWidget({\n el: this.$('.g-dicom-image'),\n parentView: this\n });\n\n this._files.selectFirst();\n\n return this;\n },\n\n _onSelectionChanged: function (selectedFile, selectedIndex) {\n this._toggleControls(false);\n\n selectedFile.getSlice()\n .done((slice) => {\n this.$('.g-dicom-filename').text(selectedFile.name()).attr('title', selectedFile.name());\n this.$('.g-dicom-slider').val(selectedIndex);\n\n this._sliceMetadataView\n .setSlice(slice)\n .render();\n this._sliceImageView\n .setSlice(slice)\n .rerenderSlice();\n })\n .always(() => {\n this._toggleControls(true);\n });\n },\n\n _toggleControls: function (enable) {\n // This does not disable the \"input\" slider, as that interferes with dragging usability\n this.$('.g-dicom-controls button').girderEnable(enable);\n },\n\n play: function () {\n if (this._playing) {\n // Increase the play rate\n this._playInterval *= 0.5;\n return;\n }\n\n this._playing = true;\n this.step();\n },\n\n step: function () {\n if (this._playing) {\n this._files.selectNext();\n setTimeout(_.bind(this.step, this), this._playInterval);\n }\n },\n\n pause: function () {\n this._playing = false;\n this._playInterval = 500;\n }\n});\n\nexport default DicomItemView;\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/views/DicomView.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkScalarsToColors from 'vtk.js/Sources/Common/Core/ScalarsToColors';\nimport { ScalarMappingTarget } from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants';\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nconst BELOW_RANGE_COLOR_INDEX = 0;\nconst ABOVE_RANGE_COLOR_INDEX = 1;\nconst NAN_COLOR_INDEX = 2;\n\n// ----------------------------------------------------------------------------\n// vtkMyClass methods\n// ----------------------------------------------------------------------------\n\nfunction vtkLookupTable(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkLookupTable');\n\n //----------------------------------------------------------------------------\n // Description:\n // Return true if all of the values defining the mapping have an opacity\n // equal to 1. Default implementation return true.\n publicAPI.isOpaque = () => {\n if (model.opaqueFlagBuildTime.getMTime() < publicAPI.getMTime()) {\n let opaque = true;\n if (model.nanColor[3] < 1.0) {\n opaque = 0;\n }\n if (model.useBelowRangeColor && model.belowRangeColor[3] < 1.0) {\n opaque = 0;\n }\n if (model.useAboveRangeColor && model.aboveRangeColor[3] < 1.0) {\n opaque = 0;\n }\n for (let i = 3; i < model.table.length && opaque; i += 4) {\n if (model.table[i] < 255) {\n opaque = false;\n }\n }\n model.opaqueFlag = opaque;\n model.opaqueFlagBuildTime.modified();\n }\n\n return model.opaqueFlag;\n };\n\n publicAPI.usingLogScale = () => false;\n\n //----------------------------------------------------------------------------\n publicAPI.getNumberOfAvailableColors = () => model.table.length;\n\n //----------------------------------------------------------------------------\n // Apply shift/scale to the scalar value v and return the index.\n publicAPI.linearIndexLookup = (v, p) => {\n let dIndex = 0;\n\n if (v < p.range[0]) {\n dIndex = p.maxIndex + BELOW_RANGE_COLOR_INDEX + 1.5;\n } else if (v > p.range[1]) {\n dIndex = p.maxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.shift) * p.scale;\n\n // This conditional is needed because when v is very close to\n // p.Range[1], it may map above p.MaxIndex in the linear mapping\n // above.\n dIndex = dIndex < p.maxIndex ? dIndex : p.maxIndex;\n }\n\n return Math.floor(dIndex);\n };\n\n publicAPI.linearLookup = (v, table, p) => {\n let index = 0;\n if (vtkMath.isNan(v)) {\n index = Math.floor(p.maxIndex + 1.5 + NAN_COLOR_INDEX);\n } else {\n index = publicAPI.linearIndexLookup(v, p);\n }\n return [\n table[4 * index],\n table[4 * index + 1],\n table[4 * index + 2],\n table[4 * index + 3],\n ];\n };\n\n publicAPI.indexedLookupFunction = (v, table, p) => {\n const index = publicAPI.getAnnotatedValueIndexInternal(v);\n return [\n table[4 * index],\n table[4 * index + 1],\n table[4 * index + 2],\n table[4 * index + 3],\n ];\n };\n\n //----------------------------------------------------------------------------\n publicAPI.lookupShiftAndScale = (range, p) => {\n p.shift = -range[0];\n p.scale = Number.MAX_VALUE;\n if (range[1] > range[0]) {\n p.scale = (p.maxIndex + 1) / (range[1] - range[0]);\n }\n };\n\n // Public API methods\n publicAPI.mapScalarsThroughTable = (\n input,\n output,\n outFormat,\n inputOffset\n ) => {\n let lookupFunc = publicAPI.linearLookup;\n if (model.indexedLookup) {\n lookupFunc = publicAPI.indexedLookupFunction;\n }\n\n const trange = publicAPI.getMappingRange();\n\n const p = {\n maxIndex: publicAPI.getNumberOfColors() - 1,\n range: trange,\n shift: 0.0,\n scale: 0.0,\n };\n publicAPI.lookupShiftAndScale(trange, p);\n\n const alpha = publicAPI.getAlpha();\n const length = input.getNumberOfTuples();\n const inIncr = input.getNumberOfComponents();\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n if (alpha >= 1.0) {\n if (outFormat === ScalarMappingTarget.RGBA) {\n for (let i = 0; i < length; i++) {\n const cptr = lookupFunc(\n inputV[i * inIncr + inputOffset],\n model.table,\n p\n );\n outputV[i * 4] = cptr[0];\n outputV[i * 4 + 1] = cptr[1];\n outputV[i * 4 + 2] = cptr[2];\n outputV[i * 4 + 3] = cptr[3];\n }\n }\n } else {\n /* eslint-disable no-lonely-if */\n if (outFormat === ScalarMappingTarget.RGBA) {\n for (let i = 0; i < length; i++) {\n const cptr = lookupFunc(\n inputV[i * inIncr + inputOffset],\n model.table,\n p\n );\n outputV[i * 4] = cptr[0];\n outputV[i * 4 + 1] = cptr[1];\n outputV[i * 4 + 2] = cptr[2];\n outputV[i * 4 + 3] = Math.floor(cptr[3] * alpha + 0.5);\n }\n }\n } // alpha blending\n };\n\n publicAPI.forceBuild = () => {\n let hinc = 0.0;\n let sinc = 0.0;\n let vinc = 0.0;\n let ainc = 0.0;\n\n const maxIndex = model.numberOfColors - 1;\n\n if (maxIndex) {\n hinc = (model.hueRange[1] - model.hueRange[0]) / maxIndex;\n sinc = (model.saturationRange[1] - model.saturationRange[0]) / maxIndex;\n vinc = (model.valueRange[1] - model.valueRange[0]) / maxIndex;\n ainc = (model.alphaRange[1] - model.alphaRange[0]) / maxIndex;\n }\n\n const hsv = [];\n const rgba = [];\n for (let i = 0; i <= maxIndex; i++) {\n hsv[0] = model.hueRange[0] + i * hinc;\n hsv[1] = model.saturationRange[0] + i * sinc;\n hsv[2] = model.valueRange[0] + i * vinc;\n\n vtkMath.hsv2rgb(hsv, rgba);\n rgba[3] = model.alphaRange[0] + i * ainc;\n\n // case VTK_RAMP_LINEAR:\n model.table[i * 4] = rgba[0] * 255.0 + 0.5;\n model.table[i * 4 + 1] = rgba[1] * 255.0 + 0.5;\n model.table[i * 4 + 2] = rgba[2] * 255.0 + 0.5;\n model.table[i * 4 + 3] = rgba[3] * 255.0 + 0.5;\n }\n\n publicAPI.buildSpecialColors();\n\n model.buildTime.modified();\n };\n\n publicAPI.buildSpecialColors = () => {\n // Add \"special\" colors (NaN, below range, above range) to table here.\n const { numberOfColors } = model;\n\n const tptr = model.table;\n let base = (model.numberOfColors + BELOW_RANGE_COLOR_INDEX) * 4;\n\n // Below range color\n if (model.useBelowRangeColor || numberOfColors === 0) {\n tptr[base] = model.belowRangeColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.belowRangeColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.belowRangeColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.belowRangeColor[3] * 255.0 + 0.5;\n } else {\n // Duplicate the first color in the table.\n tptr[base] = tptr[0];\n tptr[base + 1] = tptr[1];\n tptr[base + 2] = tptr[2];\n tptr[base + 3] = tptr[3];\n }\n\n // Above range color\n base = (model.numberOfColors + ABOVE_RANGE_COLOR_INDEX) * 4;\n if (model.useAboveRangeColor || numberOfColors === 0) {\n tptr[base] = model.aboveRangeColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.aboveRangeColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.aboveRangeColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.aboveRangeColor[3] * 255.0 + 0.5;\n } else {\n // Duplicate the last color in the table.\n tptr[base] = tptr[4 * (numberOfColors - 1) + 0];\n tptr[base + 1] = tptr[4 * (numberOfColors - 1) + 1];\n tptr[base + 2] = tptr[4 * (numberOfColors - 1) + 2];\n tptr[base + 3] = tptr[4 * (numberOfColors - 1) + 3];\n }\n\n // Always use NanColor\n base = (model.numberOfColors + NAN_COLOR_INDEX) * 4;\n tptr[base] = model.nanColor[0] * 255.0 + 0.5;\n tptr[base + 1] = model.nanColor[1] * 255.0 + 0.5;\n tptr[base + 2] = model.nanColor[2] * 255.0 + 0.5;\n tptr[base + 3] = model.nanColor[3] * 255.0 + 0.5;\n };\n\n publicAPI.build = () => {\n if (\n model.table.length < 1 ||\n publicAPI.getMTime() > model.buildTime.getMTime()\n ) {\n publicAPI.forceBuild();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n numberOfColors: 256,\n // table: null,\n\n hueRange: [0.0, 0.66667],\n saturationRange: [1.0, 1.0],\n valueRange: [1.0, 1.0],\n alphaRange: [1.0, 1.0],\n\n nanColor: [0.5, 0.0, 0.0, 1.0],\n belowRangeColor: [0.0, 0.0, 0.0, 1.0],\n aboveRangeColor: [1.0, 1.0, 1.0, 1.0],\n useAboveRangeColor: false,\n useBelowRangeColor: false,\n\n alpha: 1.0,\n // buildTime: null,\n // opaqueFlagBuildTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkScalarsToColors.extend(publicAPI, model, initialValues);\n\n // Internal objects initialization\n if (!model.table) {\n model.table = [];\n }\n\n model.buildTime = {};\n macro.obj(model.buildTime);\n\n model.opaqueFlagBuildTime = {};\n macro.obj(model.opaqueFlagBuildTime, { mtime: 0 });\n\n // Create get-only macros\n macro.get(publicAPI, model, ['buildTime']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'numberOfColors',\n 'useAboveRangeColor',\n 'useBelowRangeColor',\n ]);\n\n // Create set macros for array (needs to know size)\n macro.setArray(\n publicAPI,\n model,\n ['alphaRange', 'hueRange', 'saturationRange', 'valueRange'],\n 2\n );\n\n macro.setArray(\n publicAPI,\n model,\n ['nanColor', 'belowRangeColor', 'aboveRangeColor'],\n 4\n );\n\n // Create get macros for array\n macro.getArray(publicAPI, model, [\n 'hueRange',\n 'saturationRange',\n 'valueRange',\n 'alphaRange',\n 'nanColor',\n 'belowRangeColor',\n 'aboveRangeColor',\n ]);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkLookupTable(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkLookupTable');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/LookupTable/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport Constants from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants';\nimport vtkMapper from 'vtk.js/Sources/Rendering/Core/Mapper/Constants'; // Need to go inside Constants otherwise dependency loop\n\nconst { ScalarMappingTarget, VectorMode } = Constants;\nconst { VtkDataTypes } = vtkDataArray;\nconst { ColorMode } = vtkMapper;\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\n\nfunction intColorToUChar(c) {\n return c;\n}\nfunction floatColorToUChar(c) {\n return Math.floor(c * 255.0 + 0.5);\n}\n\n// ----------------------------------------------------------------------------\n// vtkScalarsToColors methods\n// ----------------------------------------------------------------------------\n\nfunction vtkScalarsToColors(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkScalarsToColors');\n\n publicAPI.setVectorModeToMagnitude = () =>\n publicAPI.setVectorMode(VectorMode.MAGNITUDE);\n publicAPI.setVectorModeToComponent = () =>\n publicAPI.setVectorMode(VectorMode.COMPONENT);\n publicAPI.setVectorModeToRGBColors = () =>\n publicAPI.setVectorMode(VectorMode.RGBCOLORS);\n\n publicAPI.build = () => {};\n\n publicAPI.isOpaque = () => true;\n\n //----------------------------------------------------------------------------\n publicAPI.setAnnotations = (values, annotations) => {\n if ((values && !annotations) || (!values && annotations)) {\n return;\n }\n\n if (\n values &&\n annotations &&\n values.getNumberOfTuples() !== annotations.getNumberOfTuples()\n ) {\n vtkErrorMacro(\n 'Values and annotations do not have the same number of tuples so ignoring'\n );\n return;\n }\n\n model.annotationArray = [];\n\n if (annotations && values) {\n const num = annotations.getNumberOfTuples();\n for (let i = 0; i < num; i++) {\n model.annotationArray.push({\n value: values[i],\n annotation: annotations[i],\n });\n }\n }\n\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.setAnnotation = (value, annotation) => {\n let i = publicAPI.checkForAnnotatedValue(value);\n let modified = false;\n if (i >= 0) {\n if (model.annotationArray[i].annotation !== annotation) {\n model.annotationArray[i].annotation = annotation;\n modified = true;\n }\n } else {\n model.annotationArray.push({ value, annotation });\n i = model.annotationArray.length - 1;\n modified = true;\n }\n if (modified) {\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n }\n return i;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getNumberOfAnnotatedValues = () => model.annotationArray.length;\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotatedValue = (idx) => {\n if (idx < 0 || idx >= model.annotationArray.length) {\n return null;\n }\n return model.annotationArray[idx].value;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotation = (idx) => {\n if (model.annotationArray[idx] === undefined) {\n return null;\n }\n return model.annotationArray[idx].annotation;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotatedValueIndex = (val) =>\n model.annotationArray.length ? publicAPI.checkForAnnotatedValue(val) : -1;\n\n //----------------------------------------------------------------------------\n publicAPI.removeAnnotation = (value) => {\n const i = publicAPI.checkForAnnotatedValue(value);\n const needToRemove = i >= 0;\n if (needToRemove) {\n model.annotationArray.splice(i, 1);\n publicAPI.updateAnnotatedValueMap();\n publicAPI.modified();\n }\n return needToRemove;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.resetAnnotations = () => {\n model.annotationArray = [];\n model.annotatedValueMap = [];\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getAnnotationColor = (val, rgba) => {\n if (model.indexedLookup) {\n const i = publicAPI.getAnnotatedValueIndex(val);\n publicAPI.getIndexedColor(i, rgba);\n } else {\n publicAPI.getColor(parseFloat(val), rgba);\n rgba[3] = 1.0;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.checkForAnnotatedValue = (value) =>\n publicAPI.getAnnotatedValueIndexInternal(value);\n\n //----------------------------------------------------------------------------\n // An unsafe version of vtkScalarsToColors::CheckForAnnotatedValue for\n // internal use (no pointer checks performed)\n publicAPI.getAnnotatedValueIndexInternal = (value) => {\n if (model.annotatedValueMap[value] !== undefined) {\n const na = model.annotationArray.length;\n return model.annotatedValueMap[value] % na;\n }\n return -1;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getIndexedColor = (val, rgba) => {\n rgba[0] = 0.0;\n rgba[1] = 0.0;\n rgba[2] = 0.0;\n rgba[3] = 0.0;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.updateAnnotatedValueMap = () => {\n model.annotatedValueMap = [];\n\n const na = model.annotationArray.length;\n for (let i = 0; i < na; ++i) {\n model.annotatedValueMap[model.annotationArray[i].value] = i;\n }\n };\n\n // Description:\n // Internal methods that map a data array into a 4-component,\n // unsigned char RGBA array. The color mode determines the behavior\n // of mapping. If ColorMode.DEFAULT is set, then unsigned char\n // data arrays are treated as colors (and converted to RGBA if\n // necessary); If ColorMode.DIRECT_SCALARS is set, then all arrays\n // are treated as colors (integer types are clamped in the range 0-255,\n // floating point arrays are clamped in the range 0.0-1.0. Note 'char' does\n // not have enough values to represent a color so mapping this type is\n // considered an error);\n // otherwise, the data is mapped through this instance\n // of ScalarsToColors. The component argument is used for data\n // arrays with more than one component; it indicates which component\n // to use to do the blending. When the component argument is -1,\n // then the this object uses its own selected technique to change a\n // vector into a scalar to map.\n publicAPI.mapScalars = (scalars, colorMode, componentIn) => {\n const numberOfComponents = scalars.getNumberOfComponents();\n\n let newColors = null;\n\n // map scalars through lookup table only if needed\n if (\n (colorMode === ColorMode.DEFAULT &&\n scalars.getDataType() === VtkDataTypes.UNSIGNED_CHAR) ||\n (colorMode === ColorMode.DIRECT_SCALARS && scalars)\n ) {\n newColors = publicAPI.convertToRGBA(\n scalars,\n numberOfComponents,\n scalars.getNumberOfTuples()\n );\n } else {\n const newscalars = {\n type: 'vtkDataArray',\n name: 'temp',\n numberOfComponents: 4,\n dataType: VtkDataTypes.UNSIGNED_CHAR,\n };\n\n const s = new window[newscalars.dataType](\n 4 * scalars.getNumberOfTuples()\n );\n newscalars.values = s;\n newscalars.size = s.length;\n newColors = vtkDataArray.newInstance(newscalars);\n\n let component = componentIn;\n\n // If mapper did not specify a component, use the VectorMode\n if (component < 0 && numberOfComponents > 1) {\n publicAPI.mapVectorsThroughTable(\n scalars,\n newColors,\n ScalarMappingTarget.RGBA,\n -1,\n -1\n );\n } else {\n if (component < 0) {\n component = 0;\n }\n if (component >= numberOfComponents) {\n component = numberOfComponents - 1;\n }\n\n // Map the scalars to colors\n publicAPI.mapScalarsThroughTable(\n scalars,\n newColors,\n ScalarMappingTarget.RGBA,\n component\n );\n }\n }\n\n return newColors;\n };\n\n publicAPI.mapVectorsToMagnitude = (input, output, compsToUse) => {\n const length = input.getNumberOfTuples();\n const inIncr = input.getNumberOfComponents();\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n for (let i = 0; i < length; i++) {\n let sum = 0.0;\n for (let j = 0; j < compsToUse; j++) {\n sum += inputV[i * inIncr + j];\n }\n outputV[i] = Math.sqrt(sum);\n }\n };\n\n //----------------------------------------------------------------------------\n // Map a set of vector values through the table\n publicAPI.mapVectorsThroughTable = (\n input,\n output,\n outputFormat,\n vectorComponentIn,\n vectorSizeIn\n ) => {\n let vectorMode = publicAPI.getVectorMode();\n let vectorSize = vectorSizeIn;\n let vectorComponent = vectorComponentIn;\n const inComponents = input.getNumberOfComponents();\n\n if (vectorMode === VectorMode.COMPONENT) {\n // make sure vectorComponent is within allowed range\n if (vectorComponent === -1) {\n // if set to -1, use default value provided by table\n vectorComponent = publicAPI.getVectorComponent();\n }\n if (vectorComponent < 0) {\n vectorComponent = 0;\n }\n if (vectorComponent >= inComponents) {\n vectorComponent = inComponents - 1;\n }\n } else {\n // make sure vectorSize is within allowed range\n if (vectorSize === -1) {\n // if set to -1, use default value provided by table\n vectorSize = publicAPI.getVectorSize();\n }\n if (vectorSize <= 0) {\n vectorComponent = 0;\n vectorSize = inComponents;\n } else {\n if (vectorComponent < 0) {\n vectorComponent = 0;\n }\n if (vectorComponent >= inComponents) {\n vectorComponent = inComponents - 1;\n }\n if (vectorComponent + vectorSize > inComponents) {\n vectorSize = inComponents - vectorComponent;\n }\n }\n\n if (\n vectorMode === VectorMode.MAGNITUDE &&\n (inComponents === 1 || vectorSize === 1)\n ) {\n vectorMode = VectorMode.COMPONENT;\n }\n }\n\n // increment input pointer to the first component to map\n let inputOffset = 0;\n if (vectorComponent > 0) {\n inputOffset = vectorComponent;\n }\n\n // map according to the current vector mode\n switch (vectorMode) {\n case VectorMode.COMPONENT: {\n publicAPI.mapScalarsThroughTable(\n input,\n output,\n outputFormat,\n inputOffset\n );\n break;\n }\n\n default:\n case VectorMode.MAGNITUDE: {\n const magValues = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: new Float32Array(input.getNumberOfTuples()),\n });\n\n publicAPI.mapVectorsToMagnitude(input, magValues, vectorSize);\n publicAPI.mapScalarsThroughTable(magValues, output, outputFormat, 0);\n break;\n }\n\n case VectorMode.RGBCOLORS: {\n // publicAPI.mapColorsToColors(\n // input, output, inComponents, vectorSize,\n // outputFormat);\n break;\n }\n }\n };\n\n publicAPI.luminanceToRGBA = (newColors, colors, alpha, convtFun) => {\n const a = convtFun(alpha);\n\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 1;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n const l = convtFun(values[i]);\n newValues[count * 4] = l;\n newValues[count * 4 + 1] = l;\n newValues[count * 4 + 2] = l;\n newValues[count * 4 + 3] = a;\n count++;\n }\n };\n\n publicAPI.luminanceAlphaToRGBA = (newColors, colors, alpha, convtFun) => {\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 2;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n const l = convtFun(values[i]);\n newValues[count] = l;\n newValues[count + 1] = l;\n newValues[count + 2] = l;\n newValues[count + 3] = convtFun(values[i + 1]) * alpha;\n count += 4;\n }\n };\n\n publicAPI.rGBToRGBA = (newColors, colors, alpha, convtFun) => {\n const a = floatColorToUChar(alpha);\n\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 3;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n newValues[count * 4] = convtFun(values[i]);\n newValues[count * 4 + 1] = convtFun(values[i + 1]);\n newValues[count * 4 + 2] = convtFun(values[i + 2]);\n newValues[count * 4 + 3] = a;\n count++;\n }\n };\n\n publicAPI.rGBAToRGBA = (newColors, colors, alpha, convtFun) => {\n const values = colors.getData();\n const newValues = newColors.getData();\n const size = values.length;\n const component = 0;\n const tuple = 4;\n\n let count = 0;\n for (let i = component; i < size; i += tuple) {\n newValues[count * 4] = convtFun(values[i]);\n newValues[count * 4 + 1] = convtFun(values[i + 1]);\n newValues[count * 4 + 2] = convtFun(values[i + 2]);\n newColors[count * 4 + 3] = convtFun(values[i + 3]) * alpha;\n count++;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.convertToRGBA = (colors, numComp, numTuples) => {\n let { alpha } = model;\n if (\n numComp === 4 &&\n alpha >= 1.0 &&\n colors.getDataType() === VtkDataTypes.UNSIGNED_CHAR\n ) {\n return colors;\n }\n\n const newColors = vtkDataArray.newInstance({\n numberOfComponents: 4,\n empty: true,\n size: 4 * numTuples,\n dataType: VtkDataTypes.UNSIGNED_CHAR,\n });\n\n if (numTuples <= 0) {\n return newColors;\n }\n\n alpha = alpha > 0 ? alpha : 0;\n alpha = alpha < 1 ? alpha : 1;\n\n let convtFun = intColorToUChar;\n if (\n colors.getDataType() === VtkDataTypes.FLOAT ||\n colors.getDataType() === VtkDataTypes.DOUBLE\n ) {\n convtFun = floatColorToUChar;\n }\n\n switch (numComp) {\n case 1:\n publicAPI.luminanceToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n case 2:\n publicAPI.luminanceAlphaToRGBA(newColors, colors, convtFun);\n break;\n\n case 3:\n publicAPI.rGBToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n case 4:\n publicAPI.rGBAToRGBA(newColors, colors, alpha, convtFun);\n break;\n\n default:\n vtkErrorMacro('Cannot convert colors');\n return null;\n }\n\n return newColors;\n };\n\n publicAPI.usingLogScale = () => false;\n\n publicAPI.getNumberOfAvailableColors = () => 256 * 256 * 256;\n\n publicAPI.setRange = (min, max) => publicAPI.setMappingRange(min, max);\n publicAPI.getRange = (min, max) => publicAPI.getMappingRange();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n alpha: 1.0,\n vectorComponent: 0,\n vectorSize: -1,\n vectorMode: VectorMode.COMPONENT,\n mappingRange: null,\n annotationArray: null,\n annotatedValueMap: null,\n indexedLookup: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n model.mappingRange = [0, 255];\n model.annotationArray = [];\n model.annotatedValueMap = [];\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'vectorSize',\n 'vectorComponent',\n 'vectorMode',\n 'alpha',\n 'indexedLookup',\n ]);\n\n // Create set macros for array (needs to know size)\n macro.setArray(publicAPI, model, ['mappingRange'], 2);\n\n // Create get macros for array\n macro.getArray(publicAPI, model, ['mappingRange']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkScalarsToColors(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkScalarsToColors');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/Core/ScalarsToColors/index.js","// Specify how data arrays can be used by data objects\nexport const FieldDataTypes = {\n UNIFORM: 0, // data that does not vary over points/cells/etc.\n DATA_OBJECT_FIELD: 0, // to match VTK\n\n COORDINATE: 1, // data that specifies the location of each point\n POINT_DATA: 1, // to match VTK\n\n POINT: 2, // data defined at each point, but that does not specify the point location\n POINT_FIELD_DATA: 2, // to match VTK\n\n CELL: 3, // data defined at each cell, but that does not specify the cell\n CELL_FIELD_DATA: 3, // to match VTK\n\n VERTEX: 4, // data defined at each graph vertex, but that does not specify the graph vertex\n VERTEX_FIELD_DATA: 4, // to match VTK\n\n EDGE: 5, // data defined at each graph edge, but that does not specify the graph edge\n EDGE_FIELD_DATA: 5, // to match VTK\n\n ROW: 6, // data specifying a table row\n ROW_DATA: 6, // to match VTK\n};\n\nexport const FieldAssociations = {\n FIELD_ASSOCIATION_POINTS: 0,\n FIELD_ASSOCIATION_CELLS: 1,\n FIELD_ASSOCIATION_NONE: 2,\n FIELD_ASSOCIATION_POINTS_THEN_CELLS: 3,\n FIELD_ASSOCIATION_VERTICES: 4,\n FIELD_ASSOCIATION_EDGES: 5,\n FIELD_ASSOCIATION_ROWS: 6,\n NUMBER_OF_ASSOCIATIONS: 7,\n};\n\nexport default {\n FieldDataTypes,\n FieldAssociations,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSet/Constants.js","export const AttributeTypes = {\n SCALARS: 0,\n VECTORS: 1,\n NORMALS: 2,\n TCOORDS: 3,\n TENSORS: 4,\n GLOBALIDS: 5,\n PEDIGREEIDS: 6,\n EDGEFLAG: 7,\n NUM_ATTRIBUTES: 8,\n};\n\nexport const AttributeLimitTypes = {\n MAX: 0,\n EXACT: 1,\n NOLIMIT: 2,\n};\n\nexport const CellGhostTypes = {\n DUPLICATECELL: 1, // the cell is present on multiple processors\n HIGHCONNECTIVITYCELL: 2, // the cell has more neighbors than in a regular mesh\n LOWCONNECTIVITYCELL: 4, // the cell has less neighbors than in a regular mesh\n REFINEDCELL: 8, // other cells are present that refines it.\n EXTERIORCELL: 16, // the cell is on the exterior of the data set\n HIDDENCELL: 32, // the cell is needed to maintain connectivity, but the data values should be ignored.\n};\n\nexport const PointGhostTypes = {\n DUPLICATEPOINT: 1, // the cell is present on multiple processors\n HIDDENPOINT: 2, // the point is needed to maintain connectivity, but the data values should be ignored.\n};\n\nexport const AttributeCopyOperations = {\n COPYTUPLE: 0,\n INTERPOLATE: 1,\n PASSDATA: 2,\n ALLCOPY: 3, // all of the above\n};\n\nexport const ghostArrayName = 'vtkGhostType';\n\nexport default {\n AttributeTypes,\n AttributeLimitTypes,\n CellGhostTypes,\n PointGhostTypes,\n ghostArrayName,\n AttributeCopyOperations,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants.js","import vtk from 'vtk.js/Sources/vtk';\nimport macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkFieldData methods\n// ----------------------------------------------------------------------------\n\nfunction vtkFieldData(publicAPI, model) {\n model.classHierarchy.push('vtkFieldData');\n const superGetState = publicAPI.getState;\n\n // Decode serialized data if any\n if (model.arrays) {\n model.arrays = model.arrays.map((item) => ({ data: vtk(item.data) }));\n }\n\n publicAPI.initialize = () => {\n publicAPI.initializeFields();\n publicAPI.copyAllOn();\n publicAPI.clearFieldFlags();\n };\n\n publicAPI.initializeFields = () => {\n model.arrays = [];\n model.copyFieldFlags = {};\n publicAPI.modified();\n };\n\n publicAPI.copyStructure = (other) => {\n publicAPI.initializeFields();\n model.copyFieldFlags = other.getCopyFieldFlags().map((x) => x); // Deep-copy\n model.arrays = other.arrays().map((x) => ({ array: x })); // Deep-copy\n // TODO: Copy array information objects (once we support information objects)\n };\n\n publicAPI.getNumberOfArrays = () => model.arrays.length;\n publicAPI.getNumberOfActiveArrays = () => model.arrays.length;\n publicAPI.addArray = (arr) => {\n model.arrays = [].concat(model.arrays, { data: arr });\n return model.arrays.length - 1;\n };\n publicAPI.removeAllArrays = () => {\n model.arrays = [];\n };\n publicAPI.removeArray = (arrayName) => {\n model.arrays = model.arrays.filter(\n (entry) => arrayName !== entry.data.getName()\n );\n };\n publicAPI.removeArrayByIndex = (arrayIdx) => {\n model.arrays = model.arrays.filter((entry, idx) => idx !== arrayIdx);\n };\n publicAPI.getArrays = () => model.arrays.map((entry) => entry.data);\n publicAPI.getArray = (arraySpec) =>\n typeof arraySpec === 'number'\n ? publicAPI.getArrayByIndex(arraySpec)\n : publicAPI.getArrayByName(arraySpec);\n publicAPI.getArrayByName = (arrayName) =>\n model.arrays.reduce(\n (a, b, i) => (b.data.getName() === arrayName ? b.data : a),\n null\n );\n publicAPI.getArrayWithIndex = (arrayName) =>\n model.arrays.reduce(\n (a, b, i) =>\n b.data && b.data.getName() === arrayName\n ? { array: b.data, index: i }\n : a,\n { array: null, index: -1 }\n );\n publicAPI.getArrayByIndex = (idx) =>\n idx >= 0 && idx < model.arrays.length ? model.arrays[idx].data : null;\n publicAPI.hasArray = (arrayName) =>\n publicAPI.getArrayWithIndex(arrayName).index >= 0;\n publicAPI.getArrayName = (idx) => {\n const arr = model.arrays[idx];\n return arr ? arr.data.getName() : '';\n };\n publicAPI.getCopyFieldFlags = () => model.copyFieldFlags;\n publicAPI.getFlag = (arrayName) => model.copyFieldFlags[arrayName];\n publicAPI.passData = (other) => {\n other.getArrays().forEach((arr, idx) => {\n const copyFlag = publicAPI.getFlag(arr.getName());\n if (\n copyFlag !== false &&\n !(model.doCopyAllOff && copyFlag !== true) &&\n arr\n ) {\n publicAPI.addArray(arr);\n }\n });\n };\n publicAPI.copyFieldOn = (arrayName) => {\n model.copyFieldFlags[arrayName] = true;\n };\n publicAPI.copyFieldOff = (arrayName) => {\n model.copyFieldFlags[arrayName] = false;\n };\n publicAPI.copyAllOn = () => {\n if (!model.doCopyAllOn || model.doCopyAllOff) {\n model.doCopyAllOn = true;\n model.doCopyAllOff = false;\n publicAPI.modified();\n }\n };\n publicAPI.copyAllOff = () => {\n if (model.doCopyAllOn || !model.doCopyAllOff) {\n model.doCopyAllOn = false;\n model.doCopyAllOff = true;\n publicAPI.modified();\n }\n };\n publicAPI.clearFieldFlags = () => {\n model.copyFieldFlags = {};\n };\n publicAPI.deepCopy = (other) => {\n model.arrays = other.getArrays().map((arr) => {\n const arrNew = arr.newClone();\n arrNew.deepCopy(arr);\n return { data: arrNew };\n });\n };\n publicAPI.copyFlags = (other) => other.getCopyFieldFlags().map((x) => x);\n // TODO: publicAPI.squeeze = () => model.arrays.forEach(entry => entry.data.squeeze());\n publicAPI.reset = () => model.arrays.forEach((entry) => entry.data.reset());\n // TODO: getActualMemorySize\n publicAPI.getMTime = () =>\n model.arrays.reduce(\n (a, b) => (b.data.getMTime() > a ? b.data.getMTime() : a),\n model.mtime\n );\n // TODO: publicAPI.getField = (ids, other) => { copy ids from other into this model's arrays }\n // TODO: publicAPI.getArrayContainingComponent = (component) => ...\n publicAPI.getNumberOfComponents = () =>\n model.arrays.reduce((a, b) => a + b.data.getNumberOfComponents(), 0);\n publicAPI.getNumberOfTuples = () =>\n model.arrays.length > 0 ? model.arrays[0].getNumberOfTuples() : 0;\n\n publicAPI.getState = () => {\n const result = superGetState();\n result.arrays = model.arrays.map((item) => ({\n data: item.data.getState(),\n }));\n return result;\n };\n}\n\nconst DEFAULT_VALUES = {\n arrays: [],\n copyFieldFlags: [], // fields not to copy\n doCopyAllOn: true,\n doCopyAllOff: false,\n};\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n\n vtkFieldData(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkFieldData');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData.js","import macro from 'vtk.js/Sources/macro';\nimport vtkFieldData from 'vtk.js/Sources/Common/DataModel/DataSetAttributes/FieldData';\nimport Constants from 'vtk.js/Sources/Common/DataModel/DataSetAttributes/Constants';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\n\nconst { AttributeTypes, AttributeCopyOperations } = Constants;\nconst { vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkDataSetAttributes methods\n// ----------------------------------------------------------------------------\n\nfunction vtkDataSetAttributes(publicAPI, model) {\n const attrTypes = [\n 'Scalars',\n 'Vectors',\n 'Normals',\n 'TCoords',\n 'Tensors',\n 'GlobalIds',\n 'PedigreeIds',\n ];\n\n function cleanAttributeType(attType) {\n // Given an integer or string, convert the result to one of the\n // strings in the \"attrTypes\" array above or null (if\n // no match is found)\n let cleanAttType = attrTypes.find(\n (ee) =>\n AttributeTypes[ee.toUpperCase()] === attType ||\n (typeof attType !== 'number' &&\n ee.toLowerCase() === attType.toLowerCase())\n );\n if (typeof cleanAttType === 'undefined') {\n cleanAttType = null;\n }\n return cleanAttType;\n }\n\n // Set our className\n model.classHierarchy.push('vtkDataSetAttributes');\n\n publicAPI.checkNumberOfComponents = (x) => true; // TODO\n\n publicAPI.setAttribute = (arr, uncleanAttType) => {\n const attType = cleanAttributeType(uncleanAttType);\n if (\n arr &&\n attType.toUpperCase() === 'PEDIGREEIDS' &&\n !arr.isA('vtkDataArray')\n ) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. The attribute must be a vtkDataArray.`\n );\n return -1;\n }\n if (arr && !publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Incorrect number of components.`\n );\n return -1;\n }\n let currentAttribute = model[`active${attType}`];\n if (currentAttribute >= 0 && currentAttribute < model.arrays.length) {\n if (model.arrays[currentAttribute] === arr) {\n return currentAttribute;\n }\n publicAPI.removeArrayByIndex(currentAttribute);\n }\n\n if (arr) {\n currentAttribute = publicAPI.addArray(arr);\n model[`active${attType}`] = currentAttribute;\n } else {\n model[`active${attType}`] = -1;\n }\n publicAPI.modified();\n return model[`active${attType}`];\n };\n\n publicAPI.setActiveAttributeByName = (arrayName, attType) =>\n publicAPI.setActiveAttributeByIndex(\n publicAPI.getArrayWithIndex(arrayName).index,\n attType\n );\n\n publicAPI.setActiveAttributeByIndex = (arrayIdx, uncleanAttType) => {\n const attType = cleanAttributeType(uncleanAttType);\n if (arrayIdx >= 0 && arrayIdx < model.arrays.length) {\n if (attType.toUpperCase() !== 'PEDIGREEIDS') {\n const arr = publicAPI.getArrayByIndex(arrayIdx);\n if (!arr.isA('vtkDataArray')) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Only vtkDataArray subclasses can be set as active attributes.`\n );\n return -1;\n }\n if (!publicAPI.checkNumberOfComponents(arr, attType)) {\n vtkWarningMacro(\n `Cannot set attribute ${attType}. Incorrect number of components.`\n );\n return -1;\n }\n }\n model[`active${attType}`] = arrayIdx;\n publicAPI.modified();\n return arrayIdx;\n } else if (arrayIdx === -1) {\n model[`active${attType}`] = arrayIdx;\n publicAPI.modified();\n }\n return -1;\n };\n\n publicAPI.getActiveAttribute = (attType) => {\n // Given an integer enum value or a string (with random capitalization),\n // find the matching string in attrTypes.\n const cleanAttType = cleanAttributeType(attType);\n return publicAPI[`get${cleanAttType}`]();\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeAllArrays = () => {\n model.arrays = [];\n attrTypes.forEach((attType) => {\n model[`active${attType}`] = -1;\n });\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeArray = (arrayName) => {\n model.arrays = model.arrays.filter((entry, idx) => {\n if (arrayName === entry.data.getName()) {\n // Found the array to remove, but is it an active attribute?\n attrTypes.forEach((attType) => {\n if (idx === model[`active${attType}`]) {\n model[`active${attType}`] = -1;\n }\n });\n return false;\n }\n return true;\n });\n };\n\n // Override to allow proper handling of active attributes\n publicAPI.removeArrayByIndex = (arrayIdx) => {\n model.arrays = model.arrays.filter((entry, idx) => idx !== arrayIdx);\n attrTypes.forEach((attType) => {\n if (arrayIdx === model[`active${attType}`]) {\n model[`active${attType}`] = -1;\n }\n });\n };\n\n attrTypes.forEach((value) => {\n const activeVal = `active${value}`;\n publicAPI[`get${value}`] = () =>\n publicAPI.getArrayByIndex(model[activeVal]);\n publicAPI[`set${value}`] = (da) => publicAPI.setAttribute(da, value);\n publicAPI[`setActive${value}`] = (arrayName) =>\n publicAPI.setActiveAttributeByIndex(\n publicAPI.getArrayWithIndex(arrayName).index,\n value\n );\n });\n\n publicAPI.initialize = macro.chain(publicAPI.initialize, () => {\n // Default to copying all attributes in every circumstance:\n model.copyAttributeFlags = [];\n Object.keys(AttributeCopyOperations)\n .filter((op) => op !== 'ALLCOPY')\n .forEach((attCopyOp) => {\n model.copyAttributeFlags[\n AttributeCopyOperations[attCopyOp]\n ] = Object.keys(AttributeTypes)\n .filter((ty) => ty !== 'NUM_ATTRIBUTES')\n .reduce((a, b) => {\n a[AttributeTypes[b]] = true;\n return a;\n }, []);\n });\n // Override some operations where we don't want to copy:\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][\n AttributeTypes.GLOBALIDS\n ] = false;\n model.copyAttributeFlags[AttributeCopyOperations.INTERPOLATE][\n AttributeTypes.GLOBALIDS\n ] = false;\n model.copyAttributeFlags[AttributeCopyOperations.COPYTUPLE][\n AttributeTypes.PEDIGREEIDS\n ] = false;\n });\n\n // Process dataArrays if any\n if (model.dataArrays && Object.keys(model.dataArrays).length) {\n Object.keys(model.dataArrays).forEach((name) => {\n if (\n !model.dataArrays[name].ref &&\n model.dataArrays[name].type === 'vtkDataArray'\n ) {\n publicAPI.addArray(vtkDataArray.newInstance(model.dataArrays[name]));\n }\n });\n }\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n activeScalars: -1,\n activeVectors: -1,\n activeTensors: -1,\n activeNormals: -1,\n activeTCoords: -1,\n activeGlobalIds: -1,\n activePedigreeIds: -1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n vtkFieldData.extend(publicAPI, model, initialValues);\n macro.setGet(publicAPI, model, [\n 'activeScalars',\n 'activeNormals',\n 'activeTCoords',\n 'activeVectors',\n 'activeTensors',\n 'activeGlobalIds',\n 'activePedigreeIds',\n ]);\n\n if (!model.arrays) {\n model.arrays = {};\n }\n\n // Object specific methods\n vtkDataSetAttributes(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkDataSetAttributes');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/DataSetAttributes/index.js","/**\n * The (primary) property that describes the content of a selection\n * node's data. Other auxiliary description properties follow.\n * GLOBALIDS means that the selection list contains values from the\n * vtkDataSetAttribute array of the same name.\n * PEDIGREEIDS means that the selection list contains values from the\n * vtkDataSetAttribute array of the same name.\n * VALUES means the the selection list contains values from an\n * arbitrary attribute array (ignores any globalids attribute)\n * INDICES means that the selection list contains indexes into the\n * cell or point arrays.\n * FRUSTUM means the set of points and cells inside a frustum\n * LOCATIONS means the set of points and cells near a set of positions\n * THRESHOLDS means the points and cells with values within a set of ranges\n * getContentType() returns -1 if the content type is not set.\n */\n\n// Specify how data arrays can be used by data objects\nexport const SelectionContent = {\n GLOBALIDS: 0,\n PEDIGREEIDS: 1,\n VALUES: 2,\n INDICES: 3,\n FRUSTUM: 4,\n LOCATIONS: 5,\n THRESHOLDS: 6,\n BLOCKS: 7,\n QUERY: 8,\n};\n\nexport const SelectionField = {\n CELL: 0,\n POINT: 1,\n FIELD: 2,\n VERTEX: 3,\n EDGE: 4,\n ROW: 5,\n};\n\nexport default {\n SelectionContent,\n SelectionField,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/SelectionNode/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Common/DataModel/SelectionNode/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkSelectionNode methods\n// ----------------------------------------------------------------------------\n\nfunction vtkSelectionNode(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkSelectionNode');\n\n publicAPI.getBounds = () => model.points.getBounds();\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n contentType: -1,\n fieldType: -1,\n properties: null,\n selectionList: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n macro.obj(publicAPI, model);\n model.properties = {};\n macro.setGet(publicAPI, model, [\n 'contentType',\n 'fieldType',\n 'properties',\n 'selectionList',\n ]);\n\n // Object specific methods\n vtkSelectionNode(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkSelectionNode');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/SelectionNode/index.js","import Constants from 'vtk.js/Sources/Common/DataModel/StructuredData/Constants';\n\nconst { StructuredType } = Constants;\n\nexport function getDataDescriptionFromExtent(inExt) {\n let dataDim = 0;\n for (let i = 0; i < 3; ++i) {\n if (inExt[i * 2] < inExt[i * 2 + 1]) {\n dataDim++;\n }\n }\n\n if (inExt[0] > inExt[1] || inExt[2] > inExt[3] || inExt[4] > inExt[5]) {\n return StructuredType.EMPTY;\n }\n\n if (dataDim === 3) {\n return StructuredType.XYZ_GRID;\n } else if (dataDim === 2) {\n if (inExt[0] === inExt[1]) {\n return StructuredType.YZ_PLANE;\n } else if (inExt[2] === inExt[3]) {\n return StructuredType.XZ_PLANE;\n }\n return StructuredType.XY_PLANE;\n } else if (dataDim === 1) {\n if (inExt[0] < inExt[1]) {\n return StructuredType.X_LINE;\n } else if (inExt[2] < inExt[3]) {\n return StructuredType.Y_LINE;\n }\n return StructuredType.Z_LINE;\n }\n\n return StructuredType.SINGLE_POINT;\n}\n\nexport default Object.assign({ getDataDescriptionFromExtent }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Common/DataModel/StructuredData/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkInteractorStyleTrackballCamera from 'vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport { States } from 'vtk.js/Sources/Rendering/Core/InteractorStyle/Constants';\n\n// ----------------------------------------------------------------------------\n// vtkInteractorStyleImage methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorStyleImage(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorStyleImage');\n\n //----------------------------------------------------------------------------\n publicAPI.startWindowLevel = () => {\n if (model.state !== States.IS_NONE) {\n return;\n }\n publicAPI.startState(States.IS_WINDOW_LEVEL);\n\n // Get the last (the topmost) image\n publicAPI.setCurrentImageNumber(model.currentImageNumber);\n\n if (\n model.handleObservers &&\n typeof publicAPI.invokeStartWindowLevelEvent === 'function'\n ) {\n publicAPI.invokeStartWindowLevelEvent({\n type: 'StartWindowLevelEvent',\n style: publicAPI,\n });\n } else if (model.currentImageProperty) {\n const property = model.currentImageProperty;\n model.windowLevelInitial[0] = property.getColorWindow();\n model.windowLevelInitial[1] = property.getColorLevel();\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.endWindowLevel = () => {\n if (model.state !== States.IS_WINDOW_LEVEL) {\n return;\n }\n if (\n model.handleObservers &&\n typeof publicAPI.invokeEndWindowLevelEvent === 'function'\n ) {\n publicAPI.invokeEndWindowLevelEvent({\n type: 'EndWindowLevelEvent',\n style: publicAPI,\n });\n }\n publicAPI.stopState();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.startSlice = () => {\n if (model.state !== States.IS_NONE) {\n return;\n }\n publicAPI.startState(States.IS_SLICE);\n };\n\n //----------------------------------------------------------------------------\n publicAPI.endSlice = () => {\n if (model.state !== States.IS_SLICE) {\n return;\n }\n publicAPI.stopState();\n };\n\n // Public API methods\n publicAPI.superHandleAnimation = publicAPI.handleAnimation;\n publicAPI.handleAnimation = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n\n switch (model.state) {\n case States.IS_WINDOW_LEVEL:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.windowLevel();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n case States.IS_SLICE:\n publicAPI.findPokedRenderer(pos.x, pos.y);\n publicAPI.slice();\n publicAPI.invokeInteractionEvent({ type: 'InteractionEvent' });\n break;\n\n default:\n break;\n }\n publicAPI.superHandleAnimation();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.superHandleLeftButtonPress = publicAPI.handleLeftButtonPress;\n publicAPI.handleLeftButtonPress = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer === null) {\n return;\n }\n\n publicAPI.grabFocus(model.eventCallbackCommand);\n if (!model.interactor.getShiftKey() && !model.interactor.getControlKey()) {\n model.windowLevelStartPosition[0] = pos.x;\n model.windowLevelStartPosition[1] = pos.y;\n publicAPI.startWindowLevel();\n publicAPI.setAnimationStateOn();\n } else if (\n model.interactionMode === 'IMAGE3D' &&\n model.interactor.getShiftKey()\n ) {\n // If shift is held down, do a rotation\n publicAPI.startRotate();\n publicAPI.setAnimationStateOn();\n } else if (\n model.interactionMode === 'IMAGE_SLICING' &&\n model.interactor.getControlKey()\n ) {\n // If ctrl is held down in slicing mode, slice the image\n model.lastSlicePosition = pos.y;\n publicAPI.startSlice();\n publicAPI.setAnimationStateOn();\n } else {\n // The rest of the button + key combinations remain the same\n publicAPI.superHandleLeftButtonPress();\n }\n };\n\n //--------------------------------------------------------------------------\n publicAPI.superHandleLeftButtonRelease = publicAPI.handleLeftButtonRelease;\n publicAPI.handleLeftButtonRelease = () => {\n switch (model.state) {\n case States.IS_WINDOW_LEVEL:\n publicAPI.endWindowLevel();\n if (model.interactor) {\n publicAPI.releaseFocus();\n publicAPI.setAnimationStateOff();\n }\n break;\n\n case States.IS_SLICE:\n publicAPI.endSlice();\n if (model.interactor) {\n publicAPI.releaseFocus();\n publicAPI.setAnimationStateOff();\n }\n break;\n\n default:\n break;\n }\n publicAPI.superHandleLeftButtonRelease();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.windowLevel = () => {\n const pos = model.interactor.getEventPosition(\n model.interactor.getPointerIndex()\n );\n\n model.windowLevelCurrentPosition[0] = pos.x;\n model.windowLevelCurrentPosition[1] = pos.y;\n const rwi = model.interactor;\n\n if (\n model.handleObservers &&\n typeof publicAPI.invokeWindowLevelEvent === 'function'\n ) {\n publicAPI.invokeWindowLevelEvent({\n type: 'WindowLevelEvent',\n style: publicAPI,\n });\n } else if (model.currentImageProperty) {\n const size = rwi.getView().getViewportSize(model.currentRenderer);\n\n const mWindow = model.windowLevelInitial[0];\n const level = model.windowLevelInitial[1];\n\n // Compute normalized delta\n let dx =\n (model.windowLevelCurrentPosition[0] -\n model.windowLevelStartPosition[0]) *\n 4.0 /\n size[0];\n let dy =\n (model.windowLevelStartPosition[1] -\n model.windowLevelCurrentPosition[1]) *\n 4.0 /\n size[1];\n\n // Scale by current values\n if (Math.abs(mWindow) > 0.01) {\n dx *= mWindow;\n } else {\n dx *= mWindow < 0 ? -0.01 : 0.01;\n }\n if (Math.abs(level) > 0.01) {\n dy *= level;\n } else {\n dy *= level < 0 ? -0.01 : 0.01;\n }\n\n // Abs so that direction does not flip\n if (mWindow < 0.0) {\n dx *= -1;\n }\n if (level < 0.0) {\n dy *= -1;\n }\n\n // Compute new mWindow level\n let newWindow = dx + mWindow;\n const newLevel = level - dy;\n\n if (newWindow < 0.01) {\n newWindow = 0.01;\n }\n\n model.currentImageProperty.setColorWindow(newWindow);\n model.currentImageProperty.setColorLevel(newLevel);\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.slice = () => {\n if (model.currentRenderer === null) {\n return;\n }\n\n const rwi = model.interactor;\n\n const lastPtr = model.interactor.getPointerIndex();\n const pos = model.interactor.getEventPosition(lastPtr);\n\n const dy = pos.y - model.lastSlicePosition;\n\n const camera = model.currentRenderer.getActiveCamera();\n const range = camera.getClippingRange();\n let distance = camera.getDistance();\n\n // scale the interaction by the height of the viewport\n let viewportHeight = 0.0;\n if (camera.getParallelProjection()) {\n viewportHeight = camera.getParallelScale();\n } else {\n const angle = vtkMath.radiansFromDegrees(camera.getViewAngle());\n viewportHeight = 2.0 * distance * Math.tan(0.5 * angle);\n }\n\n const size = rwi.getView().getViewportSize(model.currentRenderer);\n const delta = dy * viewportHeight / size[1];\n distance += delta;\n\n // clamp the distance to the clipping range\n if (distance < range[0]) {\n distance = range[0] + viewportHeight * 1e-3;\n }\n if (distance > range[1]) {\n distance = range[1] - viewportHeight * 1e-3;\n }\n camera.setDistance(distance);\n\n model.lastSlicePosition = pos.y;\n };\n\n //----------------------------------------------------------------------------\n // This is a way of dealing with images as if they were layers.\n // It looks through the renderer's list of props and sets the\n // interactor ivars from the Nth image that it finds. You can\n // also use negative numbers, i.e. -1 will return the last image,\n // -2 will return the second-to-last image, etc.\n publicAPI.setCurrentImageNumber = (i) => {\n model.currentImageNumber = i;\n\n if (!model.currentRenderer) {\n return;\n }\n\n function propMatch(j, prop, targetIndex) {\n if (\n prop.isA('vtkImageSlice') &&\n j === targetIndex &&\n prop.getPickable()\n ) {\n return true;\n }\n return false;\n }\n\n const props = model.currentRenderer.getViewProps();\n let targetIndex = i;\n if (i < 0) {\n targetIndex += props.length;\n }\n let imageProp = null;\n let foundImageProp = false;\n for (let j = 0; j < props.length && !foundImageProp; j++) {\n if (propMatch(j, props[j], targetIndex)) {\n foundImageProp = true;\n imageProp = props[j];\n }\n }\n\n if (imageProp) {\n model.currentImageProperty = imageProp.getProperty();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n motionFactor: 10.0,\n windowLevelStartPosition: [0, 0],\n windowLevelCurrentPosition: [0, 0],\n lastSlicePosition: 0,\n windowLevelInitial: [1.0, 0.5],\n currentImageProperty: 0,\n currentImageNumber: -1,\n interactionMode: 'IMAGE2D',\n xViewRightVector: [0, 1, 0],\n xViewUpVector: [0, 0, -1],\n yViewRightVector: [1, 0, 0],\n yViewUpVector: [0, 0, -1],\n zViewRightVector: [1, 0, 0],\n zViewUpVector: [0, 1, 0],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkInteractorStyleTrackballCamera.extend(publicAPI, model, initialValues);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['motionFactor', 'interactionMode']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkInteractorStyleImage(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkInteractorStyleImage');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend });\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Interaction/Style/InteractorStyleImage/index.js","import macro from 'vtk.js/Sources/macro';\n\nimport vtkAbstractMapper from 'vtk.js/Sources/Rendering/Core/AbstractMapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n// ----------------------------------------------------------------------------\n// vtkAbstractMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkAbstractMapper3D(publicAPI, model) {\n publicAPI.getBounds = () => 0;\n\n publicAPI.getBounds = (bounds) => {\n publicAPI.getBounds();\n for (let i = 0; i < 6; i++) {\n bounds[i] = model.bounds[i];\n }\n };\n\n publicAPI.getCenter = (...center) => {\n publicAPI.getBounds();\n for (let i = 0; i < 3; i++) {\n model.center[i] = (model.bounds[2 * i + 1] + model.bounds[2 * i]) / 2.0;\n }\n if (Array.isArray(center[0])) {\n center[0] = model.center.splice(0);\n }\n return model.center;\n };\n\n publicAPI.getLength = () => {\n let diff = 0.0;\n let l = 0.0;\n publicAPI.getBounds();\n for (let i = 0; i < 3; i++) {\n diff = model.bounds[2 * i + 1] - model.bounds[2 * i];\n l += diff * diff;\n }\n\n return Math.sqrt(l);\n };\n\n publicAPI.getClippingPlaneInDataCoords = (propMatrix, i, hnormal) => {\n const clipPlanes = model.clippingPlanes;\n const mat = propMatrix;\n\n if (clipPlanes) {\n const n = clipPlanes.length;\n if (i >= 0 && i < n) {\n // Get the plane\n const plane = clipPlanes[i];\n const normal = plane.getNormal();\n const origin = plane.getOrigin();\n\n // Compute the plane equation\n const v1 = normal[0];\n const v2 = normal[1];\n const v3 = normal[2];\n const v4 = -(v1 * origin[0] + v2 * origin[1] + v3 * origin[2]);\n\n // Transform normal from world to data coords\n hnormal[0] = v1 * mat[0] + v2 * mat[4] + v3 * mat[8] + v4 * mat[12];\n hnormal[1] = v1 * mat[1] + v2 * mat[5] + v3 * mat[9] + v4 * mat[13];\n hnormal[2] = v1 * mat[2] + v2 * mat[6] + v3 * mat[10] + v4 * mat[14];\n hnormal[3] = v1 * mat[3] + v2 * mat[7] + v3 * mat[11] + v4 * mat[15];\n\n return;\n }\n }\n macro.vtkErrorMacro(`Clipping plane index ${i} is out of range.`);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n bounds: [1, -1, 1, -1, 1, -1],\n center: [0, 0, 0],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n // Inheritance\n vtkAbstractMapper.extend(publicAPI, model, initialValues);\n\n if (!model.bounds) {\n vtkMath.uninitializeBounds(model.bounds);\n }\n\n if (!model.center) {\n model.center = [0.0, 0.0, 0.0];\n }\n\n vtkAbstractMapper3D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport default { extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/AbstractMapper3D/index.js","import { quat, vec3, vec4, mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nconst { vtkDebugMacro } = macro;\n\n/* eslint-disable new-cap */\n\n/*\n * Convenience function to access elements of a gl-matrix. If it turns\n * out I have rows and columns swapped everywhere, then I'll just change\n * the order of 'row' and 'col' parameters in this function\n */\n// function getMatrixElement(matrix, row, col) {\n// const idx = (row * 4) + col;\n// return matrix[idx];\n// }\n\n// ----------------------------------------------------------------------------\n// vtkCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkCamera');\n\n // Set up private variables and methods\n const viewMatrix = mat4.create();\n const projectionMatrix = mat4.create();\n const w2pMatrix = mat4.create();\n const origin = vec3.create();\n const dopbasis = vec3.fromValues(0.0, 0.0, -1.0);\n const upbasis = vec3.fromValues(0.0, 1.0, 0.0);\n const tmpvec1 = vec3.create();\n const tmpvec2 = vec3.create();\n const tmpvec3 = vec3.create();\n\n publicAPI.orthogonalizeViewUp = () => {\n const vt = publicAPI.getViewMatrix();\n model.viewUp[0] = vt[4];\n model.viewUp[1] = vt[5];\n model.viewUp[2] = vt[6];\n\n publicAPI.modified();\n };\n\n publicAPI.setPosition = (x, y, z) => {\n if (\n x === model.position[0] &&\n y === model.position[1] &&\n z === model.position[2]\n ) {\n return;\n }\n\n model.position[0] = x;\n model.position[1] = y;\n model.position[2] = z;\n\n // recompute the focal distance\n publicAPI.computeDistance();\n\n publicAPI.modified();\n };\n\n publicAPI.setFocalPoint = (x, y, z) => {\n if (\n x === model.focalPoint[0] &&\n y === model.focalPoint[1] &&\n z === model.focalPoint[2]\n ) {\n return;\n }\n\n model.focalPoint[0] = x;\n model.focalPoint[1] = y;\n model.focalPoint[2] = z;\n\n // recompute the focal distance\n publicAPI.computeDistance();\n\n publicAPI.modified();\n };\n\n publicAPI.setDistance = (d) => {\n if (model.distance === d) {\n return;\n }\n\n model.distance = d;\n\n if (model.distance < 1e-20) {\n model.distance = 1e-20;\n vtkDebugMacro('Distance is set to minimum.');\n }\n\n // we want to keep the camera pointing in the same direction\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n // This method must be called when the focal point or camera position changes\n publicAPI.computeDistance = () => {\n const dx = model.focalPoint[0] - model.position[0];\n const dy = model.focalPoint[1] - model.position[1];\n const dz = model.focalPoint[2] - model.position[2];\n\n model.distance = Math.sqrt(dx * dx + dy * dy + dz * dz);\n\n if (model.distance < 1e-20) {\n model.distance = 1e-20;\n vtkDebugMacro('Distance is set to minimum.');\n\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n }\n\n model.directionOfProjection[0] = dx / model.distance;\n model.directionOfProjection[1] = dy / model.distance;\n model.directionOfProjection[2] = dz / model.distance;\n\n publicAPI.computeViewPlaneNormal();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.computeViewPlaneNormal = () => {\n // VPN is -DOP\n model.viewPlaneNormal[0] = -model.directionOfProjection[0];\n model.viewPlaneNormal[1] = -model.directionOfProjection[1];\n model.viewPlaneNormal[2] = -model.directionOfProjection[2];\n };\n\n //----------------------------------------------------------------------------\n // Move the position of the camera along the view plane normal. Moving\n // towards the focal point (e.g., > 1) is a dolly-in, moving away\n // from the focal point (e.g., < 1) is a dolly-out.\n publicAPI.dolly = (amount) => {\n if (amount <= 0.0) {\n return;\n }\n\n // dolly moves the camera towards the focus\n const d = model.distance / amount;\n\n publicAPI.setPosition(\n model.focalPoint[0] - d * model.directionOfProjection[0],\n model.focalPoint[1] - d * model.directionOfProjection[1],\n model.focalPoint[2] - d * model.directionOfProjection[2]\n );\n };\n\n publicAPI.setRoll = (roll) => {};\n\n publicAPI.getRoll = () => {};\n\n publicAPI.roll = (angle) => {\n const eye = model.position;\n const at = model.focalPoint;\n const up = model.viewUp;\n const viewUpVec4 = vec4.fromValues(up[0], up[1], up[2], 0.0);\n\n const rotateMatrix = mat4.create(); // FIXME: don't create a new one each time?\n const viewDir = vec3.fromValues(\n at[0] - eye[0],\n at[1] - eye[1],\n at[2] - eye[2]\n );\n mat4.rotate(\n rotateMatrix,\n rotateMatrix,\n vtkMath.radiansFromDegrees(angle),\n viewDir\n );\n vec4.transformMat4(viewUpVec4, viewUpVec4, rotateMatrix);\n\n model.viewUp[0] = viewUpVec4[0];\n model.viewUp[1] = viewUpVec4[1];\n model.viewUp[2] = viewUpVec4[2];\n\n publicAPI.modified();\n };\n\n publicAPI.azimuth = (angle) => {\n const newPosition = vec3.create();\n const fp = model.focalPoint;\n\n const trans = mat4.create();\n mat4.identity(trans);\n\n // translate the focal point to the origin,\n // rotate about view up,\n // translate back again\n mat4.translate(trans, trans, vec3.fromValues(fp[0], fp[1], fp[2]));\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(model.viewUp[0], model.viewUp[1], model.viewUp[2])\n );\n mat4.translate(trans, trans, vec3.fromValues(-fp[0], -fp[1], -fp[2]));\n\n // apply the transform to the position\n vec3.transformMat4(\n newPosition,\n vec3.fromValues(model.position[0], model.position[1], model.position[2]),\n trans\n );\n publicAPI.setPosition(newPosition[0], newPosition[1], newPosition[2]);\n };\n\n publicAPI.yaw = (angle) => {\n const newFocalPoint = vec3.create();\n const position = model.position;\n\n const trans = mat4.create();\n mat4.identity(trans);\n\n // translate the camera to the origin,\n // rotate about axis,\n // translate back again\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(position[0], position[1], position[2])\n );\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(model.viewUp[0], model.viewUp[1], model.viewUp[2])\n );\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(-position[0], -position[1], -position[2])\n );\n\n // apply the transform to the position\n vec3.transformMat4(\n newFocalPoint,\n vec3.fromValues(\n model.focalPoint[0],\n model.focalPoint[1],\n model.focalPoint[2]\n ),\n trans\n );\n publicAPI.setFocalPoint(\n newFocalPoint[0],\n newFocalPoint[1],\n newFocalPoint[2]\n );\n };\n\n publicAPI.elevation = (angle) => {\n const newPosition = vec3.create();\n const fp = model.focalPoint;\n\n const vt = publicAPI.getViewMatrix();\n const axis = [-vt[0], -vt[1], -vt[2]];\n\n const trans = mat4.create();\n mat4.identity(trans);\n\n // translate the focal point to the origin,\n // rotate about view up,\n // translate back again\n mat4.translate(trans, trans, vec3.fromValues(fp[0], fp[1], fp[2]));\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(axis[0], axis[1], axis[2])\n );\n mat4.translate(trans, trans, vec3.fromValues(-fp[0], -fp[1], -fp[2]));\n\n // apply the transform to the position\n vec3.transformMat4(\n newPosition,\n vec3.fromValues(model.position[0], model.position[1], model.position[2]),\n trans\n );\n publicAPI.setPosition(newPosition[0], newPosition[1], newPosition[2]);\n };\n\n publicAPI.pitch = (angle) => {\n const newFocalPoint = vec3.create();\n const position = model.position;\n\n const vt = publicAPI.getViewMatrix();\n const axis = [vt[0], vt[1], vt[2]];\n\n const trans = mat4.create();\n mat4.identity(trans);\n\n // translate the camera to the origin,\n // rotate about axis,\n // translate back again\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(position[0], position[1], position[2])\n );\n mat4.rotate(\n trans,\n trans,\n vtkMath.radiansFromDegrees(angle),\n vec3.fromValues(axis[0], axis[1], axis[2])\n );\n mat4.translate(\n trans,\n trans,\n vec3.fromValues(-position[0], -position[1], -position[2])\n );\n\n // apply the transform to the position\n vec3.transformMat4(\n newFocalPoint,\n vec3.fromValues(\n model.focalPoint[0],\n model.focalPoint[1],\n model.focalPoint[2]\n ),\n trans\n );\n publicAPI.setFocalPoint(\n newFocalPoint[0],\n newFocalPoint[1],\n newFocalPoint[2]\n );\n };\n\n publicAPI.zoom = (factor) => {\n if (factor <= 0) {\n return;\n }\n if (model.parallelProjection) {\n model.parallelScale /= factor;\n } else {\n model.viewAngle /= factor;\n }\n publicAPI.modified();\n };\n\n publicAPI.setThickness = (thickness) => {};\n\n publicAPI.setObliqueAngles = (alpha, beta) => {};\n\n publicAPI.physicalOrientationToWorldDirection = (ori) => {\n // get the PhysicalToWorldMatrix\n publicAPI.getPhysicalToWorldMatrix(w2pMatrix);\n\n // push the x axis through the orientation quat\n const oriq = quat.fromValues(ori[0], ori[1], ori[2], ori[3]);\n const coriq = quat.create();\n const qdir = quat.fromValues(0.0, 0.0, 1.0, 0.0);\n quat.conjugate(coriq, oriq);\n\n // rotate the z axis by the quat\n quat.multiply(qdir, oriq, qdir);\n quat.multiply(qdir, qdir, coriq);\n\n // return the z axis in world coords\n return [qdir[0], qdir[1], qdir[2]];\n };\n\n publicAPI.getPhysicalToWorldMatrix = (result) => {\n publicAPI.getWorldToPhysicalMatrix(result);\n mat4.invert(result, result);\n };\n\n publicAPI.getWorldToPhysicalMatrix = (result) => {\n mat4.identity(w2pMatrix);\n vec3.set(\n tmpvec1,\n model.physicalScale,\n model.physicalScale,\n model.physicalScale\n );\n mat4.scale(w2pMatrix, w2pMatrix, tmpvec1);\n mat4.translate(w2pMatrix, w2pMatrix, model.physicalTranslation);\n\n // now the physical to vtk world rotation tform\n const physVRight = [3];\n vtkMath.cross(model.physicalViewNorth, model.physicalViewUp, physVRight);\n const phystoworld = mat4.create();\n phystoworld[0] = physVRight[0];\n phystoworld[1] = physVRight[1];\n phystoworld[2] = physVRight[2];\n phystoworld[4] = model.physicalViewUp[0];\n phystoworld[5] = model.physicalViewUp[1];\n phystoworld[6] = model.physicalViewUp[2];\n phystoworld[8] = -model.physicalViewNorth[0];\n phystoworld[9] = -model.physicalViewNorth[1];\n phystoworld[10] = -model.physicalViewNorth[2];\n mat4.transpose(phystoworld, phystoworld);\n mat4.multiply(result, w2pMatrix, phystoworld);\n };\n\n // the provided matrix should include\n // translation and orientation only\n publicAPI.computeViewParametersFromPhysicalMatrix = (mat) => {\n // get the WorldToPhysicalMatrix\n publicAPI.getWorldToPhysicalMatrix(w2pMatrix);\n\n // first convert the physical -> hmd matrix to be world -> hmd\n mat4.multiply(viewMatrix, mat, w2pMatrix);\n // invert to get hmd -> world\n mat4.invert(viewMatrix, viewMatrix);\n\n // then extract the params position, orientation\n // push 0,0,0 through to get a translation\n vec3.transformMat4(tmpvec1, origin, viewMatrix);\n publicAPI.computeDistance();\n const oldDist = model.distance;\n publicAPI.setPosition(tmpvec1[0], tmpvec1[1], tmpvec1[2]);\n\n // push basis vectors to get orientation\n vec3.transformMat4(tmpvec2, dopbasis, viewMatrix);\n vec3.subtract(tmpvec2, tmpvec2, tmpvec1);\n vec3.normalize(tmpvec2, tmpvec2);\n publicAPI.setDirectionOfProjection(tmpvec2[0], tmpvec2[1], tmpvec2[2]);\n vec3.transformMat4(tmpvec3, upbasis, viewMatrix);\n vec3.subtract(tmpvec3, tmpvec3, tmpvec1);\n publicAPI.setViewUp(tmpvec3[0], tmpvec3[1], tmpvec3[2]);\n\n publicAPI.setDistance(oldDist);\n };\n\n publicAPI.getViewMatrix = () => {\n const eye = model.position;\n const at = model.focalPoint;\n const up = model.viewUp;\n\n const result = mat4.create();\n mat4.lookAt(\n viewMatrix,\n vec3.fromValues(eye[0], eye[1], eye[2]), // eye\n vec3.fromValues(at[0], at[1], at[2]), // at\n vec3.fromValues(up[0], up[1], up[2])\n ); // up\n\n mat4.transpose(viewMatrix, viewMatrix);\n\n mat4.copy(result, viewMatrix);\n return result;\n };\n\n publicAPI.setProjectionMatrix = (mat) => {\n model.projectionMatrix = mat;\n };\n\n publicAPI.getProjectionMatrix = (aspect, nearz, farz) => {\n const result = mat4.create();\n\n if (model.projectionMatrix) {\n vec3.set(\n tmpvec1,\n model.physicalScale,\n model.physicalScale,\n model.physicalScale\n );\n\n mat4.copy(result, model.projectionMatrix);\n mat4.scale(result, result, tmpvec1);\n mat4.transpose(result, result);\n return result;\n }\n\n mat4.identity(projectionMatrix);\n\n // FIXME: Not sure what to do about adjust z buffer here\n // adjust Z-buffer range\n // this->ProjectionTransform->AdjustZBuffer( -1, +1, nearz, farz );\n const cWidth = model.clippingRange[1] - model.clippingRange[0];\n const cRange = [\n model.clippingRange[0] + (nearz + 1) * cWidth / 2.0,\n model.clippingRange[0] + (farz + 1) * cWidth / 2.0,\n ];\n\n if (model.parallelProjection) {\n // set up a rectangular parallelipiped\n const width = model.parallelScale * aspect;\n const height = model.parallelScale;\n\n const xmin = (model.windowCenter[0] - 1.0) * width;\n const xmax = (model.windowCenter[0] + 1.0) * width;\n const ymin = (model.windowCenter[1] - 1.0) * height;\n const ymax = (model.windowCenter[1] + 1.0) * height;\n\n mat4.ortho(\n projectionMatrix,\n xmin,\n xmax,\n ymin,\n ymax,\n cRange[0],\n cRange[1]\n );\n mat4.transpose(projectionMatrix, projectionMatrix);\n } else if (model.useOffAxisProjection) {\n throw new Error('Off-Axis projection is not supported at this time');\n } else {\n const tmp = Math.tan(vtkMath.radiansFromDegrees(model.viewAngle) / 2.0);\n let width;\n let height;\n if (model.useHorizontalViewAngle === true) {\n width = model.clippingRange[0] * tmp;\n height = model.clippingRange[0] * tmp / aspect;\n } else {\n width = model.clippingRange[0] * tmp * aspect;\n height = model.clippingRange[0] * tmp;\n }\n\n const xmin = (model.windowCenter[0] - 1.0) * width;\n const xmax = (model.windowCenter[0] + 1.0) * width;\n const ymin = (model.windowCenter[1] - 1.0) * height;\n const ymax = (model.windowCenter[1] + 1.0) * height;\n const znear = cRange[0];\n const zfar = cRange[1];\n\n projectionMatrix[0] = 2.0 * znear / (xmax - xmin);\n projectionMatrix[5] = 2.0 * znear / (ymax - ymin);\n projectionMatrix[2] = (xmin + xmax) / (xmax - xmin);\n projectionMatrix[6] = (ymin + ymax) / (ymax - ymin);\n projectionMatrix[10] = -(znear + zfar) / (zfar - znear);\n projectionMatrix[14] = -1.0;\n projectionMatrix[11] = -2.0 * znear * zfar / (zfar - znear);\n projectionMatrix[15] = 0.0;\n }\n\n mat4.copy(result, projectionMatrix);\n\n return result;\n };\n\n publicAPI.getCompositeProjectionMatrix = (aspect, nearz, farz) => {\n const vMat = publicAPI.getViewMatrix();\n const pMat = publicAPI.getProjectionMatrix(aspect, nearz, farz);\n const result = mat4.create();\n mat4.multiply(result, vMat, pMat);\n return result;\n };\n\n publicAPI.getFrustumPlanes = (aspect) => {\n // Return array of 24 params (4 params for each of 6 plane equations)\n };\n\n publicAPI.getOrientation = () => {};\n\n publicAPI.getOrientationWXYZ = () => {};\n\n publicAPI.setDirectionOfProjection = (x, y, z) => {\n if (\n model.directionOfProjection[0] === x &&\n model.directionOfProjection[1] === y &&\n model.directionOfProjection[2] === z\n ) {\n return;\n }\n\n model.directionOfProjection[0] = x;\n model.directionOfProjection[1] = y;\n model.directionOfProjection[2] = z;\n\n const vec = model.directionOfProjection;\n\n // recalculate FocalPoint\n model.focalPoint[0] = model.position[0] + vec[0] * model.distance;\n model.focalPoint[1] = model.position[1] + vec[1] * model.distance;\n model.focalPoint[2] = model.position[2] + vec[2] * model.distance;\n publicAPI.computeViewPlaneNormal();\n };\n\n // used to handle convert js device orientation angles\n // when you use this method the camera will adjust to the\n // device orientation such that the physicalViewUp you set\n // in world coordinates looks up, and the physicalViewNorth\n // you set in world coorindates will (maybe) point north\n publicAPI.setDeviceAngles = (alpha, beta, gamma, screen) => {\n const rotmat = mat4.create(); // phone to physical coordinates\n mat4.rotateZ(rotmat, rotmat, vtkMath.radiansFromDegrees(alpha));\n mat4.rotateX(rotmat, rotmat, vtkMath.radiansFromDegrees(beta));\n mat4.rotateY(rotmat, rotmat, vtkMath.radiansFromDegrees(gamma));\n mat4.rotateZ(rotmat, rotmat, vtkMath.radiansFromDegrees(-screen));\n\n const dop = vec3.fromValues(0.0, 0.0, -1.0);\n const vup = vec3.fromValues(0.0, 1.0, 0.0);\n const newdop = vec3.create();\n const newvup = vec3.create();\n vec3.transformMat4(newdop, dop, rotmat);\n vec3.transformMat4(newvup, vup, rotmat);\n\n // now the physical to vtk world tform\n const physVRight = [3];\n vtkMath.cross(model.physicalViewNorth, model.physicalViewUp, physVRight);\n const phystoworld = mat3.create();\n phystoworld[0] = physVRight[0];\n phystoworld[1] = physVRight[1];\n phystoworld[2] = physVRight[2];\n phystoworld[3] = model.physicalViewNorth[0];\n phystoworld[4] = model.physicalViewNorth[1];\n phystoworld[5] = model.physicalViewNorth[2];\n phystoworld[6] = model.physicalViewUp[0];\n phystoworld[7] = model.physicalViewUp[1];\n phystoworld[8] = model.physicalViewUp[2];\n mat3.transpose(phystoworld, phystoworld);\n vec3.transformMat3(newdop, newdop, phystoworld);\n vec3.transformMat3(newvup, newvup, phystoworld);\n\n publicAPI.setDirectionOfProjection(newdop[0], newdop[1], newdop[2]);\n publicAPI.setViewUp(newvup[0], newvup[1], newvup[2]);\n publicAPI.modified();\n };\n\n publicAPI.setOrientationWXYZ = (degrees, x, y, z) => {\n const quatMat = mat4.create();\n\n if (degrees !== 0.0 && (x !== 0.0 || y !== 0.0 || z !== 0.0)) {\n // convert to radians\n const angle = vtkMath.radiansFromDegrees(degrees);\n const q = quat.create();\n quat.setAxisAngle(q, [x, y, z], angle);\n quat.toMat4(q, quatMat);\n }\n\n const dop = vec3.fromValues(0.0, 0.0, -1.0);\n const newdop = vec3.create();\n vec3.transformMat4(newdop, dop, quatMat);\n\n const vup = vec3.fromValues(0.0, 1.0, 0.0);\n const newvup = vec3.create();\n vec3.transformMat4(newvup, vup, quatMat);\n\n publicAPI.setDirectionOfProjection(newdop[0], newdop[1], newdop[2]);\n publicAPI.setViewUp(newvup[0], newvup[1], newvup[2]);\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n position: [0, 0, 1],\n focalPoint: [0, 0, 0],\n viewUp: [0, 1, 0],\n directionOfProjection: [0, 0, -1],\n parallelProjection: false,\n useHorizontalViewAngle: false,\n viewAngle: 30,\n parallelScale: 1,\n clippingRange: [0.01, 1000.01],\n thickness: 1000,\n windowCenter: [0, 0],\n viewPlaneNormal: [0, 0, 1],\n useOffAxisProjection: false,\n screenBottomLeft: [-0.5, -0.5, -0.5],\n screenBottomRight: [0.5, -0.5, -0.5],\n screenTopRight: [0.5, 0.5, -0.5],\n freezeFocalPoint: false,\n useScissor: false,\n projectionMatrix: null,\n\n // used for world to physical transformations\n physicalTranslation: [0, 0, 0],\n physicalScale: 1.0,\n physicalViewUp: [0, 1, 0],\n physicalViewNorth: [0, 0, -1],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.viewMatrix = macro.get(publicAPI, model, ['distance', 'thickness']);\n\n macro.setGet(publicAPI, model, [\n 'parallelProjection',\n 'useHorizontalViewAngle',\n 'viewAngle',\n 'parallelScale',\n 'useOffAxisProjection',\n 'freezeFocalPoint',\n 'useScissor',\n 'physicalScale',\n ]);\n\n macro.getArray(publicAPI, model, [\n 'directionOfProjection',\n 'viewPlaneNormal',\n 'position',\n 'focalPoint',\n ]);\n\n macro.setGetArray(publicAPI, model, ['clippingRange', 'windowCenter'], 2);\n\n macro.setGetArray(\n publicAPI,\n model,\n [\n 'viewUp',\n 'screenBottomLeft',\n 'screenBottomRight',\n 'screenTopRight',\n 'physicalTranslation',\n 'physicalViewUp',\n 'physicalViewNorth',\n ],\n 3\n );\n\n // Object methods\n vtkCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkCamera');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Camera/index.js","import Constants from 'vtk.js/Sources/Rendering/Core/ImageMapper/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkAbstractMapper from 'vtk.js/Sources/Rendering/Core/AbstractMapper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkPlane from 'vtk.js/Sources/Common/DataModel/Plane';\n\nimport { vec3 } from 'gl-matrix';\n\nconst { SlicingMode } = Constants;\n\n// ----------------------------------------------------------------------------\n// vtkImageMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageMapper');\n\n publicAPI.setZSliceFromCamera = (cam) => {\n const image = publicAPI.getInputData();\n const fp = cam.getFocalPoint();\n const idx = [];\n image.worldToIndex(fp, idx);\n publicAPI.setZSlice(Math.floor(idx[2] + 0.5));\n };\n\n publicAPI.setZSliceIndex = (id) => {\n model.currentSlicingMode = SlicingMode.Z;\n publicAPI.setZSlice(id);\n };\n\n publicAPI.setYSliceIndex = (id) => {\n model.currentSlicingMode = SlicingMode.Y;\n publicAPI.setYSlice(id);\n };\n\n publicAPI.setXSliceIndex = (id) => {\n model.currentSlicingMode = SlicingMode.X;\n publicAPI.setXSlice(id);\n };\n\n publicAPI.getBounds = () => {\n const image = publicAPI.getInputData();\n if (!image) {\n return vtkMath.createUninitializedBounds();\n }\n if (!model.useCustomExtents) {\n return image.getBounds();\n }\n\n const ex = [\n model.customDisplayExtent[0],\n model.customDisplayExtent[1],\n model.customDisplayExtent[2],\n model.customDisplayExtent[3],\n model.zSlice,\n model.zSlice,\n ];\n\n return image.extentToBounds(ex);\n };\n\n publicAPI.getIsOpaque = () => true;\n\n publicAPI.intersectWithLineForPointPicking = (p1, p2) => {\n const imageData = publicAPI.getInputData();\n const extent = imageData.getExtent();\n\n // Slice origin\n const ijk = [\n model.xSlice + extent[0],\n model.ySlice + extent[2],\n model.zSlice + extent[4],\n ];\n const worldOrigin = [0, 0, 0];\n imageData.indexToWorld(ijk, worldOrigin);\n\n // Normal computation\n ijk[model.currentSlicingMode] += 1;\n const worldNormal = [0, 0, 0];\n imageData.indexToWorld(ijk, worldNormal);\n worldNormal[0] -= worldOrigin[0];\n worldNormal[1] -= worldOrigin[1];\n worldNormal[2] -= worldOrigin[2];\n vec3.normalize(worldNormal, worldNormal);\n\n const intersect = vtkPlane.intersectWithLine(\n p1,\n p2,\n worldOrigin,\n worldNormal\n );\n if (intersect.intersection) {\n const point = intersect.x;\n const absoluteIJK = [0, 0, 0];\n imageData.worldToIndex(point, absoluteIJK);\n\n // Are we outside our actual extent/bounds\n if (\n absoluteIJK[0] < extent[0] ||\n absoluteIJK[0] > extent[1] ||\n absoluteIJK[1] < extent[2] ||\n absoluteIJK[1] > extent[3] ||\n absoluteIJK[2] < extent[4] ||\n absoluteIJK[2] > extent[5]\n ) {\n return null;\n }\n\n // Get closer integer ijk\n ijk[0] = Math.round(absoluteIJK[0]);\n ijk[1] = Math.round(absoluteIJK[1]);\n ijk[2] = Math.round(absoluteIJK[2]);\n\n return {\n ijk,\n absoluteIJK,\n point,\n };\n }\n return null;\n };\n\n publicAPI.intersectWithLineForCellPicking = (p1, p2) => {\n const imageData = publicAPI.getInputData();\n const extent = imageData.getExtent();\n\n // Slice origin\n const ijk = [\n model.xSlice + extent[0],\n model.ySlice + extent[2],\n model.zSlice + extent[4],\n ];\n const worldOrigin = [0, 0, 0];\n imageData.indexToWorld(ijk, worldOrigin);\n\n // Normal computation\n ijk[model.currentSlicingMode] += 1;\n const worldNormal = [0, 0, 0];\n imageData.indexToWorld(ijk, worldNormal);\n worldNormal[0] -= worldOrigin[0];\n worldNormal[1] -= worldOrigin[1];\n worldNormal[2] -= worldOrigin[2];\n vec3.normalize(worldNormal, worldNormal);\n\n const intersect = vtkPlane.intersectWithLine(\n p1,\n p2,\n worldOrigin,\n worldNormal\n );\n if (intersect.intersection) {\n const point = intersect.x;\n const absoluteIJK = [0, 0, 0];\n imageData.worldToIndex(point, absoluteIJK);\n\n // Are we outside our actual extent/bounds\n if (\n absoluteIJK[0] < extent[0] ||\n absoluteIJK[0] > extent[1] ||\n absoluteIJK[1] < extent[2] ||\n absoluteIJK[1] > extent[3] ||\n absoluteIJK[2] < extent[4] ||\n absoluteIJK[2] > extent[5]\n ) {\n return null;\n }\n\n // Get closer integer ijk\n ijk[0] = Math.floor(absoluteIJK[0]);\n ijk[1] = Math.floor(absoluteIJK[1]);\n ijk[2] = Math.floor(absoluteIJK[2]);\n\n return {\n ijk,\n absoluteIJK,\n point,\n };\n }\n return null;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n displayExtent: [0, 0, 0, 0, 0, 0],\n customDisplayExtent: [0, 0, 0, 0],\n useCustomExtents: false,\n xSlice: 0,\n ySlice: 0,\n zSlice: 0,\n currentSlicingMode: SlicingMode.NONE,\n renderToRectangle: false,\n sliceAtFocalPoint: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n vtkAbstractMapper.extend(publicAPI, model, initialValues);\n\n macro.setGet(publicAPI, model, [\n 'currentSlicingMode',\n 'xSlice',\n 'ySlice',\n 'zSlice',\n 'useCustomExtents',\n 'renderToRectangle',\n 'sliceAtFocalPoint',\n ]);\n macro.setGetArray(publicAPI, model, ['customDisplayExtent'], 4);\n\n // Object methods\n vtkImageMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageMapper/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkImageProperty methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageProperty(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageProperty');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\nconst DEFAULT_VALUES = {\n colorWindow: 255,\n colorLevel: 127.5,\n ambient: 1.0,\n diffuse: 0.0,\n opacity: 1.0,\n rGBTransferFunction: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n macro.setGet(publicAPI, model, [\n 'colorWindow',\n 'colorLevel',\n 'ambient',\n 'diffuse',\n 'opacity',\n 'rGBTransferFunction',\n ]);\n\n publicAPI.getMTime = () => {\n let mTime = model.mtime;\n if (model.rGBTransferFunction !== null) {\n const time = model.rGBTransferFunction.getMTime();\n mTime = time > mTime ? time : mTime;\n }\n\n return mTime;\n };\n\n // Object methods\n vtkImageProperty(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageProperty');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageProperty/index.js","import { vec3, mat4 } from 'gl-matrix';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkProp3D from 'vtk.js/Sources/Rendering/Core/Prop3D';\nimport vtkImageProperty from 'vtk.js/Sources/Rendering/Core/ImageProperty';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkImageSlice methods\n// ----------------------------------------------------------------------------\n\nfunction vtkImageSlice(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkImageSlice');\n\n publicAPI.getActors = () => publicAPI;\n publicAPI.getImages = () => publicAPI;\n\n publicAPI.getIsOpaque = () => true;\n\n // Always render during opaque pass, to keep the behavior\n // predictable and because depth-peeling kills alpha-blending.\n // In the future, the Renderer should render images in layers,\n // i.e. where each image will have a layer number assigned to it,\n // and the Renderer will do the images in their own pass.\n publicAPI.hasTranslucentPolygonalGeometry = () => false;\n\n publicAPI.makeProperty = vtkImageProperty.newInstance;\n\n publicAPI.getProperty = () => {\n if (model.property === null) {\n model.property = publicAPI.makeProperty();\n }\n return model.property;\n };\n\n publicAPI.getBounds = () => {\n if (model.mapper === null) {\n return model.bounds;\n }\n\n // Check for the special case when the mapper's bounds are unknown\n const bds = model.mapper.getBounds();\n if (!bds || bds.length !== 6) {\n return bds;\n }\n\n // Check for the special case when the actor is empty.\n if (bds[0] > bds[1]) {\n model.mapperBounds = bds.concat(); // copy the mapper's bounds\n model.bounds = [1, -1, 1, -1, 1, -1];\n model.boundsMTime.modified();\n return bds;\n }\n\n // Check if we have cached values for these bounds - we cache the\n // values returned by model.mapper.getBounds() and we store the time\n // of caching. If the values returned this time are different, or\n // the modified time of this class is newer than the cached time,\n // then we need to rebuild.\n const zip = (rows) => rows[0].map((_, c) => rows.map((row) => row[c]));\n if (\n !model.mapperBounds ||\n !zip([bds, model.mapperBounds]).reduce(\n (a, b) => a && b[0] === b[1],\n true\n ) ||\n publicAPI.getMTime() > model.boundsMTime.getMTime()\n ) {\n vtkDebugMacro('Recomputing bounds...');\n model.mapperBounds = bds.map((x) => x);\n const bbox = [\n vec3.fromValues(bds[1], bds[3], bds[5]),\n vec3.fromValues(bds[1], bds[2], bds[5]),\n vec3.fromValues(bds[0], bds[2], bds[5]),\n vec3.fromValues(bds[0], bds[3], bds[5]),\n vec3.fromValues(bds[1], bds[3], bds[4]),\n vec3.fromValues(bds[1], bds[2], bds[4]),\n vec3.fromValues(bds[0], bds[2], bds[4]),\n vec3.fromValues(bds[0], bds[3], bds[4]),\n ];\n\n publicAPI.computeMatrix();\n const tmp4 = mat4.create();\n mat4.transpose(tmp4, model.matrix);\n bbox.forEach((pt) => vec3.transformMat4(pt, pt, tmp4));\n\n /* eslint-disable no-multi-assign */\n model.bounds[0] = model.bounds[2] = model.bounds[4] = Number.MAX_VALUE;\n model.bounds[1] = model.bounds[3] = model.bounds[5] = -Number.MAX_VALUE;\n /* eslint-enable no-multi-assign */\n model.bounds = model.bounds.map(\n (d, i) =>\n i % 2 === 0\n ? bbox.reduce((a, b) => (a > b[i / 2] ? b[i / 2] : a), d)\n : bbox.reduce(\n (a, b) => (a < b[(i - 1) / 2] ? b[(i - 1) / 2] : a),\n d\n )\n );\n model.boundsMTime.modified();\n }\n return model.bounds;\n };\n\n //----------------------------------------------------------------------------\n // Get the minimum X bound\n publicAPI.getMinXBound = () => {\n publicAPI.getBounds();\n return model.bounds[0];\n };\n\n // Get the maximum X bound\n publicAPI.getMaxXBound = () => {\n publicAPI.getBounds();\n return model.bounds[1];\n };\n\n // Get the minimum Y bound\n publicAPI.getMinYBound = () => {\n publicAPI.getBounds();\n return model.bounds[2];\n };\n\n // Get the maximum Y bound\n publicAPI.getMaxYBound = () => {\n publicAPI.getBounds();\n return model.bounds[3];\n };\n\n // Get the minimum Z bound\n publicAPI.getMinZBound = () => {\n publicAPI.getBounds();\n return model.bounds[4];\n };\n\n // Get the maximum Z bound\n publicAPI.getMaxZBound = () => {\n publicAPI.getBounds();\n return model.bounds[5];\n };\n\n publicAPI.getMTime = () => {\n let mt = model.mtime;\n if (model.property !== null) {\n const time = model.property.getMTime();\n mt = time > mt ? time : mt;\n }\n\n return mt;\n };\n\n publicAPI.getRedrawMTime = () => {\n let mt = model.mtime;\n if (model.mapper !== null) {\n let time = model.mapper.getMTime();\n mt = time > mt ? time : mt;\n if (model.mapper.getInput() !== null) {\n // FIXME !!! getInputAlgorithm / getInput\n model.mapper.getInputAlgorithm().update();\n time = model.mapper.getInput().getMTime();\n mt = time > mt ? time : mt;\n }\n }\n if (model.property !== null) {\n let time = model.property.getMTime();\n mt = time > mt ? time : mt;\n if (model.property.getRGBTransferFunction() !== null) {\n time = model.property.getRGBTransferFunction().getMTime();\n mt = time > mt ? time : mt;\n }\n }\n return mt;\n };\n\n publicAPI.getSupportsSelection = () =>\n model.mapper ? model.mapper.getSupportsSelection() : false;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n mapper: null,\n property: null,\n\n bounds: [1, -1, 1, -1, 1, -1],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkProp3D.extend(publicAPI, model, initialValues);\n\n // vtkTimeStamp\n model.boundsMTime = {};\n macro.obj(model.boundsMTime);\n\n // Build VTK API\n macro.set(publicAPI, model, ['property']);\n macro.setGet(publicAPI, model, ['mapper']);\n macro.getArray(publicAPI, model, ['bounds'], 6);\n\n // Object methods\n vtkImageSlice(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkImageSlice');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/ImageSlice/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------\n// Description:\n// Transform from world to display coordinates.\nfunction computeWorldToDisplay(renderer, x, y, z) {\n const view = renderer.getRenderWindow().getViews()[0];\n return view.worldToDisplay(x, y, z, renderer);\n}\n\n//----------------------------------------------------------------------------\n// Description:\n// Transform from display to world coordinates.\nfunction computeDisplayToWorld(renderer, x, y, z) {\n const view = renderer.getRenderWindow().getViews()[0];\n return view.displayToWorld(x, y, z, renderer);\n}\n\n// ----------------------------------------------------------------------------\n// Static API\n// ----------------------------------------------------------------------------\nexport const STATIC = {\n computeWorldToDisplay,\n computeDisplayToWorld,\n};\n\n// ----------------------------------------------------------------------------\n// vtkInteractorObserver methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorObserver(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorObserver');\n\n // Public API methods\n publicAPI.setInteractor = (i) => {\n if (i === model.interactor) {\n return;\n }\n\n // Since the observer mediator is bound to the interactor, reset it to\n // 0 so that the next time it is requested, it is queried from the\n // new interactor.\n // Furthermore, remove ourself from the mediator queue.\n\n // if (this->ObserverMediator)\n // {\n // this->ObserverMediator->RemoveAllCursorShapeRequests(this);\n // this->ObserverMediator = 0;\n // }\n\n // if we already have an Interactor then stop observing it\n if (model.interactor) {\n publicAPI.setEnabled(false); // disable the old interactor\n model.charObserverTag();\n model.charObserverTag = null;\n model.deleteObserverTag();\n model.deleteObserverTag = null;\n }\n\n model.interactor = i;\n\n // add observers for each of the events handled in ProcessEvents\n if (i) {\n model.charObserverTag = i.onCharEvent(publicAPI.keyPressCallbackCommand);\n // this->Priority);\n model.deleteObserverTag = i.onDeleteEvent(\n publicAPI.keyPressCallbackCommand\n );\n // this->Priority);\n // publicAPI.registerPickers();\n }\n\n publicAPI.modified();\n };\n\n //----------------------------------------------------------------------------\n // Description:\n // Transform from display to world coordinates.\n publicAPI.computeDisplayToWorld = (x, y, z) => {\n if (!model.currentRenderer) {\n return null;\n }\n\n return model.interactor\n .getView()\n .displayToWorld(x, y, z, model.currentRenderer);\n };\n\n //----------------------------------------------------------------------------\n // Description:\n // Transform from world to display coordinates.\n publicAPI.computeWorldToDisplay = (x, y, z) => {\n if (!model.currentRenderer) {\n return null;\n }\n\n return model.interactor\n .getView()\n .worldToDisplay(x, y, z, model.currentRenderer);\n };\n\n //----------------------------------------------------------------------------\n publicAPI.grabFocus = () => {\n // void vtkInteractorObserver::GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents)\n // {\n // if ( this->Interactor )\n // {\n // this->Interactor->GrabFocus(mouseEvents,keypressEvents);\n // }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.releaseFocus = () => {\n // void vtkInteractorObserver::ReleaseFocus()\n // {\n // if ( this->Interactor )\n // {\n // this->Interactor->ReleaseFocus();\n // }\n };\n\n // //----------------------------------------------------------------------------\n // void vtkInteractorObserver::StartInteraction()\n // {\n // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate());\n // }\n\n // //----------------------------------------------------------------------------\n // void vtkInteractorObserver::EndInteraction()\n // {\n // this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetStillUpdateRate());\n // }\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n enabled: false,\n interactor: null,\n currentRenderer: null,\n defaultRenderer: null,\n priority: 0.0,\n keyPressActivationValue: 'i',\n charObserverTag: null,\n deleteObserverTag: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.event(publicAPI, model, 'InteractionEvent');\n macro.event(publicAPI, model, 'StartInteractionEvent');\n macro.event(publicAPI, model, 'EndInteractionEvent');\n\n // Create get-only macros\n macro.get(publicAPI, model, ['interactor']);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, ['priority', 'currentRenderer']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkInteractorObserver(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkInteractorObserver');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, STATIC);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorObserver/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkInteractorObserver from 'vtk.js/Sources/Rendering/Core/InteractorObserver';\nimport Constants from 'vtk.js/Sources/Rendering/Core/InteractorStyle/Constants';\n\nconst { States } = Constants;\nconst { vtkWarningMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\n// Add module-level functions or api that you want to expose statically via\n// the next section...\n\nconst stateNames = {\n Rotate: States.IS_ROTATE,\n Pan: States.IS_PAN,\n Spin: States.IS_SPIN,\n Dolly: States.IS_DOLLY,\n Zoom: States.IS_ZOOM,\n Timer: States.IS_TIMER,\n TwoPointer: States.IS_TWO_POINTER,\n UniformScale: States.IS_USCALE,\n CameraPose: States.IS_CAMERA_POSE,\n};\n\nconst events = [\n 'Animation',\n 'Enter',\n 'Leave',\n 'MouseMove',\n 'LeftButtonPress',\n 'LeftButtonRelease',\n 'MiddleButtonPress',\n 'MiddleButtonRelease',\n 'RightButtonPress',\n 'RightButtonRelease',\n 'MouseWheelForward',\n 'MouseWheelBackward',\n 'Expose',\n 'Configure',\n 'Timer',\n 'KeyPress',\n 'KeyUp',\n 'Char',\n 'Delete',\n 'Pinch',\n 'Pan',\n 'Rotate',\n 'Tap',\n 'LongTap',\n 'Swipe',\n 'Button3D',\n 'Move3D',\n];\n\n// ----------------------------------------------------------------------------\n// vtkInteractorStyle methods\n// ----------------------------------------------------------------------------\n\nfunction vtkInteractorStyle(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkInteractorStyle');\n\n // Public API methods\n publicAPI.setInteractor = (i) => {\n if (i === model.interactor) {\n return;\n }\n\n // if we already have an Interactor then stop observing it\n if (model.interactor) {\n while (model.unsubscribes.length) {\n model.unsubscribes.pop().unsubscribe();\n }\n }\n\n model.interactor = i;\n\n if (i) {\n events.forEach((eventName) => {\n model.unsubscribes.push(\n i[`on${eventName}`]((data) => {\n if (publicAPI[`handle${eventName}`]) {\n publicAPI[`handle${eventName}`](data);\n }\n })\n );\n });\n }\n };\n\n // create bunch of Start/EndState methods\n Object.keys(stateNames).forEach((key) => {\n publicAPI[`start${key}`] = () => {\n if (model.state !== States.IS_NONE) {\n return;\n }\n publicAPI.startState(stateNames[key]);\n };\n publicAPI[`end${key}`] = () => {\n if (model.state !== stateNames[key]) {\n return;\n }\n publicAPI.stopState();\n };\n });\n\n //----------------------------------------------------------------------------\n publicAPI.handleChar = () => {\n const rwi = model.interactor;\n\n let pos = null;\n\n switch (rwi.getKeyCode()) {\n case 'r':\n case 'R':\n pos = model.interactor.getEventPosition(rwi.getPointerIndex());\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer !== 0) {\n model.currentRenderer.resetCamera();\n } else {\n vtkWarningMacro('no current renderer on the interactor style.');\n }\n rwi.render();\n break;\n\n case 'w':\n case 'W':\n pos = model.interactor.getEventPosition(rwi.getPointerIndex());\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer !== 0) {\n const ac = model.currentRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToWireframe();\n });\n } else {\n vtkWarningMacro('no current renderer on the interactor style.');\n }\n rwi.render();\n break;\n\n case 's':\n case 'S':\n pos = model.interactor.getEventPosition(rwi.getPointerIndex());\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer !== 0) {\n const ac = model.currentRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToSurface();\n });\n } else {\n vtkWarningMacro('no current renderer on the interactor style.');\n }\n rwi.render();\n break;\n\n case 'v':\n case 'V':\n pos = model.interactor.getEventPosition(rwi.getPointerIndex());\n publicAPI.findPokedRenderer(pos.x, pos.y);\n if (model.currentRenderer !== 0) {\n const ac = model.currentRenderer.getActors();\n ac.forEach((anActor) => {\n anActor.getProperty().setRepresentationToPoints();\n });\n } else {\n vtkWarningMacro('no current renderer on the interactor style.');\n }\n rwi.render();\n break;\n\n default:\n break;\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.findPokedRenderer = (x, y) => {\n publicAPI.setCurrentRenderer(model.interactor.findPokedRenderer(x, y));\n };\n\n publicAPI.setAnimationStateOn = () => {\n if (model.animationState === States.IS_ANIM_ON) {\n return;\n }\n model.animationState = States.IS_ANIM_ON;\n model.interactor.requestAnimation(publicAPI);\n };\n\n publicAPI.setAnimationStateOff = () => {\n if (model.animationState === States.IS_ANIM_OFF) {\n return;\n }\n model.animationState = States.IS_ANIM_OFF;\n model.interactor.cancelAnimation(publicAPI);\n };\n\n publicAPI.startState = (state) => {\n model.state = state;\n if (model.animationState === States.IS_ANIM_OFF) {\n publicAPI.invokeStartInteractionEvent({ type: 'StartInteractionEvent' });\n }\n };\n\n publicAPI.stopState = () => {\n model.state = States.IS_NONE;\n if (model.animationState === States.IS_ANIM_OFF) {\n const rwi = model.interactor;\n publicAPI.invokeEndInteractionEvent({ type: 'EndInteractionEvent' });\n rwi.render();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n state: States.IS_NONE,\n animationState: States.IS_ANIM_OFF,\n handleObservers: 1,\n autoAdjustCameraClippingRange: 1,\n unsubscribes: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkInteractorObserver.extend(publicAPI, model, initialValues);\n\n model.unsubscribes = [];\n\n // Object specific methods\n vtkInteractorStyle(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkInteractorStyle');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/InteractorStyle/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\n// ----------------------------------------------------------------------------\n\nexport const LIGHT_TYPES = ['HeadLight', 'CameraLight', 'SceneLight'];\n\n// ----------------------------------------------------------------------------\n// vtkLight methods\n// ----------------------------------------------------------------------------\n\nfunction vtkLight(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkLight');\n\n publicAPI.getTransformedPosition = () => {\n if (model.transformMatrix) {\n return []; // FIXME !!!!\n }\n return [].concat(model.position);\n };\n\n publicAPI.getTransformedFocalPoint = () => {\n if (model.transformMatrix) {\n return []; // FIXME !!!!\n }\n return [].concat(model.focalPoint);\n };\n\n publicAPI.getDirection = () => {\n if (model.directionMTime < model.mtime) {\n model.direction[0] = model.focalPoint[0] - model.position[0];\n model.direction[1] = model.focalPoint[1] - model.position[1];\n model.direction[2] = model.focalPoint[2] - model.position[2];\n vtkMath.normalize(model.direction);\n model.directionMTime = model.mtime;\n }\n return model.direction;\n };\n\n publicAPI.setDirectionAngle = (elevation, azimuth) => {\n const elevationRadians = vtkMath.radiansFromDegrees(elevation);\n const azimuthRadians = vtkMath.radiansFromDegrees(azimuth);\n\n publicAPI.setPosition(\n Math.cos(elevationRadians) * Math.sin(azimuthRadians),\n Math.sin(elevationRadians),\n Math.cos(elevationRadians) * Math.cos(azimuthRadians)\n );\n\n publicAPI.setFocalPoint(0, 0, 0);\n publicAPI.setPositional(0);\n };\n\n publicAPI.setLightTypeToHeadLight = () => {\n publicAPI.setLightType('HeadLight');\n };\n\n publicAPI.setLightTypeToCameraLight = () => {\n publicAPI.setLightType('CameraLight');\n };\n\n publicAPI.setLightTypeToSceneLight = () => {\n publicAPI.setTransformMatrix(null);\n publicAPI.setLightType('SceneLight');\n };\n\n publicAPI.lightTypeIsHeadLight = () => model.lightType === 'HeadLight';\n\n publicAPI.lightTypeIsSceneLight = () => model.lightType === 'SceneLight';\n\n publicAPI.lightTypeIsCameraLight = () => model.lightType === 'CameraLight';\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n switch: true,\n intensity: 1,\n color: [1, 1, 1],\n position: [0, 0, 1],\n focalPoint: [0, 0, 0],\n positional: false,\n exponent: 1,\n coneAngle: 30,\n attenuationValues: [1, 0, 0],\n transformMatrix: null,\n lightType: 'SceneLight',\n shadowAttenuation: 1,\n direction: [0, 0, 0],\n directionMTime: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'intensity',\n 'switch',\n 'positional',\n 'exponent',\n 'coneAngle',\n 'transformMatrix',\n 'lightType',\n 'shadowAttenuation',\n ]);\n macro.setGetArray(\n publicAPI,\n model,\n ['color', 'position', 'focalPoint', 'attenuationValues'],\n 3\n );\n\n // Object methods\n vtkLight(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkLight');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend, LIGHT_TYPES };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Light/index.js","export function addCoincidentTopologyMethods(publicAPI, model, nameList) {\n nameList.forEach((item) => {\n publicAPI[`get${item.method}`] = () => model[item.key];\n publicAPI[`set${item.method}`] = (factor, unit) => {\n model[item.key] = { factor, unit };\n };\n });\n}\n\nexport const CATEGORIES = ['Polygon', 'Line', 'Point'];\n\nexport default {\n addCoincidentTopologyMethods,\n CATEGORIES,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper.js","let resolveCoincidentTopologyPolygonOffsetFaces = 1;\nlet resolveCoincidentTopology = 0;\n\nexport const RESOLVE_COINCIDENT_TOPOLOGY_MODE = [\n 'VTK_RESOLVE_OFF',\n 'VTK_RESOLVE_POLYGON_OFFSET',\n];\n\nexport function getResolveCoincidentTopologyPolygonOffsetFaces() {\n return resolveCoincidentTopologyPolygonOffsetFaces;\n}\n\nexport function setResolveCoincidentTopologyPolygonOffsetFaces(value) {\n resolveCoincidentTopologyPolygonOffsetFaces = value;\n}\n\nexport function getResolveCoincidentTopology() {\n return resolveCoincidentTopology;\n}\n\nexport function setResolveCoincidentTopology(mode = 0) {\n resolveCoincidentTopology = mode;\n}\n\nexport function setResolveCoincidentTopologyToDefault() {\n setResolveCoincidentTopology(0); // VTK_RESOLVE_OFF\n}\n\nexport function setResolveCoincidentTopologyToOff() {\n setResolveCoincidentTopology(0); // VTK_RESOLVE_OFF\n}\n\nexport function setResolveCoincidentTopologyToPolygonOffset() {\n setResolveCoincidentTopology(1); // VTK_RESOLVE_POLYGON_OFFSET\n}\n\nexport function getResolveCoincidentTopologyAsString() {\n return RESOLVE_COINCIDENT_TOPOLOGY_MODE[resolveCoincidentTopology];\n}\n\nexport default {\n getResolveCoincidentTopologyAsString,\n getResolveCoincidentTopologyPolygonOffsetFaces,\n setResolveCoincidentTopology,\n setResolveCoincidentTopologyPolygonOffsetFaces,\n setResolveCoincidentTopologyToDefault,\n setResolveCoincidentTopologyToOff,\n setResolveCoincidentTopologyToPolygonOffset,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/Static.js","import macro from 'vtk.js/Sources/macro';\nimport vtkAbstractMapper3D from 'vtk.js/Sources/Rendering/Core/AbstractMapper3D';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport vtkImageData from 'vtk.js/Sources/Common/DataModel/ImageData';\nimport vtkLookupTable from 'vtk.js/Sources/Common/Core/LookupTable';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkScalarsToColors from 'vtk.js/Sources/Common/Core/ScalarsToColors/Constants'; // Need to go inside Constants otherwise dependency loop\n\nimport CoincidentTopologyHelper from 'vtk.js/Sources/Rendering/Core/Mapper/CoincidentTopologyHelper';\nimport otherStaticMethods from 'vtk.js/Sources/Rendering/Core/Mapper/Static';\nimport Constants from 'vtk.js/Sources/Rendering/Core/Mapper/Constants';\n\nconst { ColorMode, ScalarMode, GetArray } = Constants;\nconst { VectorMode } = vtkScalarsToColors;\n\n// ----------------------------------------------------------------------------\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkMapper::${method} - NOT IMPLEMENTED`);\n}\n\n// CoincidentTopology static methods ------------------------------------------\n/* eslint-disable arrow-body-style */\n\nconst staticOffsetModel = {\n Polygon: { factor: 2, offset: 0 },\n Line: { factor: 1, offset: -1 },\n Point: { factor: 0, offset: -2 },\n};\nconst staticOffsetAPI = {};\n\nCoincidentTopologyHelper.addCoincidentTopologyMethods(\n staticOffsetAPI,\n staticOffsetModel,\n CoincidentTopologyHelper.CATEGORIES.map((key) => ({\n key,\n method: `ResolveCoincidentTopology${key}OffsetParameters`,\n }))\n);\n\n// ----------------------------------------------------------------------------\n// vtkMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkMapper');\n\n publicAPI.getBounds = () => {\n const input = publicAPI.getInputData();\n if (!input) {\n model.bounds = vtkMath.createUninitializedBounds();\n } else {\n if (!model.static) {\n publicAPI.update();\n }\n model.bounds = input.getBounds();\n }\n return model.bounds;\n };\n\n publicAPI.setForceCompileOnly = (v) => {\n model.forceCompileOnly = v;\n // make sure we do NOT call modified()\n };\n\n publicAPI.createDefaultLookupTable = () => {\n model.lookupTable = vtkLookupTable.newInstance();\n };\n\n publicAPI.getColorModeAsString = () =>\n macro.enumToString(ColorMode, model.colorMode);\n\n publicAPI.setColorModeToDefault = () => publicAPI.setColorMode(0);\n publicAPI.setColorModeToMapScalars = () => publicAPI.setColorMode(1);\n publicAPI.setColorModeToDirectScalars = () => publicAPI.setColorMode(2);\n\n publicAPI.getScalarModeAsString = () =>\n macro.enumToString(ScalarMode, model.scalarMode);\n\n publicAPI.setScalarModeToDefault = () => publicAPI.setScalarMode(0);\n publicAPI.setScalarModeToUsePointData = () => publicAPI.setScalarMode(1);\n publicAPI.setScalarModeToUseCellData = () => publicAPI.setScalarMode(2);\n publicAPI.setScalarModeToUsePointFieldData = () => publicAPI.setScalarMode(3);\n publicAPI.setScalarModeToUseCellFieldData = () => publicAPI.setScalarMode(4);\n publicAPI.setScalarModeToUseFieldData = () => publicAPI.setScalarMode(5);\n\n // Add Static methods to our instance\n Object.keys(otherStaticMethods).forEach((methodName) => {\n publicAPI[methodName] = otherStaticMethods[methodName];\n });\n Object.keys(staticOffsetAPI).forEach((methodName) => {\n publicAPI[methodName] = staticOffsetAPI[methodName];\n });\n\n // Relative metods\n /* eslint-disable arrow-body-style */\n model.topologyOffset = {\n Polygon: { factor: 0, offset: 0 },\n Line: { factor: 0, offset: 0 },\n Point: { factor: 0, offset: 0 },\n };\n CoincidentTopologyHelper.addCoincidentTopologyMethods(\n publicAPI,\n model.topologyOffset,\n CoincidentTopologyHelper.CATEGORIES.map((key) => ({\n key,\n method: `RelativeCoincidentTopology${key}OffsetParameters`,\n }))\n );\n /* eslint-enable arrow-body-style */\n\n publicAPI.getCoincidentTopologyPolygonOffsetParameters = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyPolygonOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyPolygonOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getCoincidentTopologyLineOffsetParameters = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyLineOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyLineOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getCoincidentTopologyPointOffsetParameter = () => {\n const globalValue = staticOffsetAPI.getResolveCoincidentTopologyPointOffsetParameters();\n const localValue = publicAPI.getRelativeCoincidentTopologyPointOffsetParameters();\n return {\n factor: globalValue.factor + localValue.factor,\n offset: globalValue.offset + localValue.offset,\n };\n };\n\n publicAPI.getAbstractScalars = (\n input,\n scalarMode,\n arrayAccessMode,\n arrayId,\n arrayName\n ) => {\n // make sure we have an input\n if (!input || !model.scalarVisibility) {\n return null;\n }\n\n let scalars = null;\n\n // get and scalar data according to scalar mode\n if (scalarMode === ScalarMode.DEFAULT) {\n scalars = input.getPointData().getScalars();\n if (!scalars) {\n scalars = input.getCellData().getScalars();\n }\n } else if (scalarMode === ScalarMode.USE_POINT_DATA) {\n scalars = input.getPointData().getScalars();\n } else if (scalarMode === ScalarMode.USE_CELL_DATA) {\n scalars = input.getCellData().getScalars();\n } else if (scalarMode === ScalarMode.USE_POINT_FIELD_DATA) {\n const pd = input.getPointData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = pd.getArrayByIndex(arrayId);\n } else {\n scalars = pd.getArrayByName(arrayName);\n }\n } else if (scalarMode === ScalarMode.USE_CELL_FIELD_DATA) {\n const cd = input.getCellData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = cd.getArrayByIndex(arrayId);\n } else {\n scalars = cd.getArrayByName(arrayName);\n }\n } else if (scalarMode === ScalarMode.USE_FIELD_DATA) {\n const fd = input.getFieldData();\n if (arrayAccessMode === GetArray.BY_ID) {\n scalars = fd.getArrayByIndex(arrayId);\n } else {\n scalars = fd.getArrayByName(arrayName);\n }\n }\n\n return scalars;\n };\n\n publicAPI.mapScalars = (input, alpha) => {\n const scalars = publicAPI.getAbstractScalars(\n input,\n model.scalarMode,\n model.arrayAccessMode,\n model.arrayId,\n model.colorByArrayName\n );\n\n if (!scalars) {\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n model.colorMapColors = null;\n return;\n }\n\n if (!model.useLookupTableScalarRange) {\n publicAPI\n .getLookupTable()\n .setRange(model.scalarRange[0], model.scalarRange[1]);\n }\n\n // Decide betweeen texture color or vertex color.\n // Cell data always uses vertex color.\n // Only point data can use both texture and vertex coloring.\n if (publicAPI.canUseTextureMapForColoring(input)) {\n publicAPI.mapScalarsToTexture(scalars, alpha);\n return;\n }\n\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n\n const lut = publicAPI.getLookupTable();\n if (lut) {\n // Ensure that the lookup table is built\n lut.build();\n model.colorMapColors = lut.mapScalars(scalars, model.colorMode, 0);\n }\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.scalarToTextureCoordinate = (\n scalarValue, // Input scalar\n rangeMin, // range[0]\n invRangeWidth\n ) => {\n // 1/(range[1]-range[0])\n let texCoordS = 0.5; // Scalar value is arbitrary when NaN\n let texCoordT = 1.0; // 1.0 in t coordinate means NaN\n if (!vtkMath.isNan(scalarValue)) {\n // 0.0 in t coordinate means not NaN. So why am I setting it to 0.49?\n // Because when you are mapping scalars and you have a NaN adjacent to\n // anything else, the interpolation everywhere should be NaN. Thus, I\n // want the NaN color everywhere except right on the non-NaN neighbors.\n // To simulate this, I set the t coord for the real numbers close to\n // the threshold so that the interpolation almost immediately looks up\n // the NaN value.\n texCoordT = 0.49;\n\n texCoordS = (scalarValue - rangeMin) * invRangeWidth;\n\n // Some implementations apparently don't handle relatively large\n // numbers (compared to the range [0.0, 1.0]) very well. In fact,\n // values above 1122.0f appear to cause texture wrap-around on\n // some systems even when edge clamping is enabled. Why 1122.0f? I\n // don't know. For safety, we'll clamp at +/- 1000. This will\n // result in incorrect images when the texture value should be\n // above or below 1000, but I don't have a better solution.\n if (texCoordS > 1000.0) {\n texCoordS = 1000.0;\n } else if (texCoordS < -1000.0) {\n texCoordS = -1000.0;\n }\n }\n return { texCoordS, texCoordT };\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.createColorTextureCoordinates = (\n input,\n output,\n numScalars,\n numComps,\n component,\n range,\n tableRange,\n tableNumberOfColors,\n useLogScale\n ) => {\n // We have to change the range used for computing texture\n // coordinates slightly to accomodate the special above- and\n // below-range colors that are the first and last texels,\n // respectively.\n const scalarTexelWidth = (range[1] - range[0]) / tableNumberOfColors;\n\n const paddedRange = [];\n paddedRange[0] = range[0] - scalarTexelWidth;\n paddedRange[1] = range[1] + scalarTexelWidth;\n const invRangeWidth = 1.0 / (paddedRange[1] - paddedRange[0]);\n\n const outputV = output.getData();\n const inputV = input.getData();\n\n let count = 0;\n let outputCount = 0;\n if (component < 0 || component >= numComps) {\n for (let scalarIdx = 0; scalarIdx < numScalars; ++scalarIdx) {\n let sum = 0;\n for (let compIdx = 0; compIdx < numComps; ++compIdx) {\n sum += inputV[count] * inputV[count];\n count++;\n }\n let magnitude = Math.sqrt(sum);\n if (useLogScale) {\n magnitude = vtkLookupTable.applyLogScale(\n magnitude,\n tableRange,\n range\n );\n }\n const outputs = publicAPI.scalarToTextureCoordinate(\n magnitude,\n paddedRange[0],\n invRangeWidth\n );\n outputV[outputCount] = outputs.texCoordS;\n outputV[outputCount + 1] = outputs.texCoordT;\n outputCount += 2;\n }\n } else {\n count += component;\n for (let scalarIdx = 0; scalarIdx < numScalars; ++scalarIdx) {\n let inputValue = inputV[count];\n if (useLogScale) {\n inputValue = vtkLookupTable.applyLogScale(\n inputValue,\n tableRange,\n range\n );\n }\n const outputs = publicAPI.scalarToTextureCoordinate(\n inputValue,\n paddedRange[0],\n invRangeWidth\n );\n outputV[outputCount] = outputs.texCoordS;\n outputV[outputCount + 1] = outputs.texCoordT;\n outputCount += 2;\n count += numComps;\n }\n }\n };\n\n publicAPI.mapScalarsToTexture = (scalars, alpha) => {\n const range = model.lookupTable.getRange();\n const useLogScale = model.lookupTable.usingLogScale();\n if (useLogScale) {\n // convert range to log.\n vtkLookupTable.getLogRange(range, range);\n }\n\n const origAlpha = model.lookupTable.getAlpha();\n\n // Get rid of vertex color array. Only texture or vertex coloring\n // can be active at one time. The existence of the array is the\n // signal to use that technique.\n model.colorMapColors = null;\n\n // If the lookup table has changed, then recreate the color texture map.\n // Set a new lookup table changes this->MTime.\n if (\n model.colorTextureMap == null ||\n publicAPI.getMTime() > model.colorTextureMap.getMTime() ||\n model.lookupTable.getMTime() > model.colorTextureMap.getMTime() ||\n model.lookupTable.getAlpha() !== alpha\n ) {\n model.lookupTable.setAlpha(alpha);\n model.colorTextureMap = null;\n\n // Get the texture map from the lookup table.\n // Create a dummy ramp of scalars.\n // In the future, we could extend vtkScalarsToColors.\n model.lookupTable.build();\n let numberOfColors = model.lookupTable.getNumberOfAvailableColors();\n if (numberOfColors > 4094) {\n numberOfColors = 4094;\n }\n numberOfColors += 2;\n const k = (range[1] - range[0]) / (numberOfColors - 1 - 2);\n\n const newArray = new Float64Array(numberOfColors * 2);\n\n for (let i = 0; i < numberOfColors; ++i) {\n newArray[i] = range[0] + i * k - k; // minus k to start at below range color\n if (useLogScale) {\n newArray[i] = 10.0 ** newArray[i];\n }\n }\n // Dimension on NaN.\n for (let i = 0; i < numberOfColors; ++i) {\n newArray[i + numberOfColors] = NaN;\n }\n\n model.colorTextureMap = vtkImageData.newInstance();\n model.colorTextureMap.setExtent(0, numberOfColors - 1, 0, 1, 0, 0);\n\n const tmp = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: newArray,\n });\n\n model.colorTextureMap\n .getPointData()\n .setScalars(model.lookupTable.mapScalars(tmp, model.colorMode, 0));\n model.lookupTable.setAlpha(origAlpha);\n }\n\n // Create new coordinates if necessary.\n // Need to compare lookup table incase the range has changed.\n if (\n !model.colorCoordinates ||\n publicAPI.getMTime() > model.colorCoordinates.getMTime() ||\n publicAPI.getInputData(0).getMTime() >\n model.colorCoordinates.getMTime() ||\n model.lookupTable.getMTime() > model.colorCoordinates.getMTime()\n ) {\n // Get rid of old colors\n model.colorCoordinates = null;\n\n // Now create the color texture coordinates.\n const numComps = scalars.getNumberOfComponents();\n const num = scalars.getNumberOfTuples();\n\n // const fArray = new FloatArray(num * 2);\n model.colorCoordinates = vtkDataArray.newInstance({\n numberOfComponents: 2,\n values: new Float32Array(num * 2),\n });\n\n let scalarComponent = model.lookupTable.getVectorComponent();\n // Although I like the feature of applying magnitude to single component\n // scalars, it is not how the old MapScalars for vertex coloring works.\n if (\n model.lookupTable.getVectorMode() === VectorMode.MAGNITUDE &&\n scalars.getNumberOfComponents() > 1\n ) {\n scalarComponent = -1;\n }\n\n publicAPI.createColorTextureCoordinates(\n scalars,\n model.colorCoordinates,\n num,\n numComps,\n scalarComponent,\n range,\n model.lookupTable.getRange(),\n model.colorTextureMap\n .getPointData()\n .getScalars()\n .getNumberOfTuples() /\n 2 -\n 2,\n useLogScale\n );\n }\n };\n\n publicAPI.getIsOpaque = () => {\n const lut = publicAPI.getLookupTable();\n if (lut) {\n // Ensure that the lookup table is built\n lut.build();\n return lut.isOpaque();\n }\n return true;\n };\n\n publicAPI.canUseTextureMapForColoring = (input) => {\n if (!model.interpolateScalarsBeforeMapping) {\n return false; // user doesn't want us to use texture maps at all.\n }\n\n // index color does not use textures\n if (model.lookupTable && model.lookupTable.getIndexedLookup()) {\n return false;\n }\n\n return true;\n };\n\n publicAPI.clearColorArrays = () => {\n model.colorMapColors = null;\n model.colorCoordinates = null;\n model.colorTextureMap = null;\n };\n\n publicAPI.getLookupTable = () => {\n if (!model.lookupTable) {\n publicAPI.createDefaultLookupTable();\n }\n return model.lookupTable;\n };\n\n publicAPI.getMTime = () => {\n let mt = model.mtime;\n if (model.lookupTable !== null) {\n const time = model.lookupTable.getMTime();\n mt = time > mt ? time : mt;\n }\n return mt;\n };\n\n publicAPI.getPrimativeCount = () => {\n const input = publicAPI.getInputData();\n const pcount = {\n points: input.getPoints().getNumberOfValues(),\n verts:\n input.getVerts().getNumberOfValues() -\n input.getVerts().getNumberOfCells(),\n lines:\n input.getLines().getNumberOfValues() -\n 2 * input.getLines().getNumberOfCells(),\n triangles:\n input.getPolys().getNumberOfValues() -\n 3 * input.getLines().getNumberOfCells(),\n };\n return pcount;\n };\n\n publicAPI.acquireInvertibleLookupTable = notImplemented(\n 'AcquireInvertibleLookupTable'\n );\n publicAPI.valueToColor = notImplemented('ValueToColor');\n publicAPI.colorToValue = notImplemented('ColorToValue');\n publicAPI.useInvertibleColorFor = notImplemented('UseInvertibleColorFor');\n publicAPI.clearInvertibleColor = notImplemented('ClearInvertibleColor');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n colorMapColors: null, // Same as this->Colors\n\n static: false,\n lookupTable: null,\n\n scalarVisibility: true,\n scalarRange: [0, 1],\n useLookupTableScalarRange: false,\n\n colorMode: 0,\n scalarMode: 0,\n arrayAccessMode: 1, // By_NAME\n\n renderTime: 0,\n\n colorByArrayName: null,\n\n fieldDataTupleId: -1,\n\n interpolateScalarsBeforeMapping: false,\n colorCoordinates: null,\n colorTextureMap: null,\n\n forceCompileOnly: 0,\n\n useInvertibleColors: false,\n invertibleScalars: null,\n resolveCoincidentTopology: false,\n\n viewSpecificProperties: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkAbstractMapper3D.extend(publicAPI, model, initialValues);\n\n macro.get(publicAPI, model, [\n 'colorCoordinates',\n 'colorMapColors',\n 'colorTextureMap',\n ]);\n macro.setGet(publicAPI, model, [\n 'colorByArrayName',\n 'arrayAccessMode',\n 'colorMode',\n 'fieldDataTupleId',\n 'interpolateScalarsBeforeMapping',\n 'lookupTable',\n 'renderTime',\n 'resolveCoincidentTopology',\n 'scalarMode',\n 'scalarVisibility',\n 'static',\n 'useLookupTableScalarRange',\n 'viewSpecificProperties',\n ]);\n macro.setGetArray(publicAPI, model, ['scalarRange'], 2);\n\n if (!model.viewSpecificProperties) {\n model.viewSpecificProperties = {};\n }\n\n // Object methods\n vtkMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign(\n { newInstance, extend },\n staticOffsetAPI,\n otherStaticMethods,\n Constants\n);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Mapper/index.js","import macro from 'vtk.js/Sources/macro';\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkProp::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkProp methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProp(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProp');\n\n publicAPI.getMTime = () => {\n let m1 = model.mtime;\n for (let index = 0; index < model.textures.length; ++index) {\n const m2 = model.textures[index].getMTime();\n if (m2 > m1) {\n m1 = m2;\n }\n }\n return m1;\n };\n\n publicAPI.getNestedProps = () => null;\n publicAPI.getActors = () => null;\n publicAPI.getActors2D = () => null;\n publicAPI.getVolumes = () => null;\n\n publicAPI.pick = notImplemented('pick');\n publicAPI.hasKey = notImplemented('hasKey');\n\n publicAPI.getRedrawMTime = () => model.mtime;\n\n publicAPI.setEstimatedRenderTime = (t) => {\n model.estimatedRenderTime = t;\n model.savedEstimatedRenderTime = t;\n };\n\n publicAPI.restoreEstimatedRenderTime = () => {\n model.estimatedRenderTime = model.savedEstimatedRenderTime;\n };\n\n publicAPI.addEstimatedRenderTime = (t) => {\n model.estimatedRenderTime += t;\n };\n\n publicAPI.setAllocatedRenderTime = (t) => {\n model.allocatedRenderTime = t;\n model.savedEstimatedRenderTime = model.estimatedRenderTime;\n model.estimatedRenderTime = 0;\n };\n\n publicAPI.getSupportsSelection = () => false;\n\n publicAPI.getTextures = () => model.textures;\n publicAPI.hasTexture = (texture) =>\n !!model.textures.filter((item) => item === texture).length;\n publicAPI.addTexture = (texture) => {\n if (texture && !publicAPI.hasTexture(texture)) {\n model.textures = model.textures.concat(texture);\n publicAPI.modified();\n }\n };\n\n publicAPI.removeTexture = (texture) => {\n const newTextureList = model.textures.filter((item) => item === texture);\n if (model.texture.length !== newTextureList.length) {\n model.textures = newTextureList;\n publicAPI.modified();\n }\n };\n\n publicAPI.removeAllTextures = () => {\n model.textures = [];\n publicAPI.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n visibility: true,\n pickable: true,\n dragable: true,\n useBounds: true,\n allocatedRenderTime: 10,\n estimatedRenderTime: 0,\n savedEstimatedRenderTime: 0,\n renderTimeMultiplier: 1,\n paths: null,\n textures: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.get(publicAPI, model, ['estimatedRenderTime', 'allocatedRenderTime']);\n macro.setGet(publicAPI, model, [\n 'visibility',\n 'pickable',\n 'dragable',\n 'useBounds',\n 'renderTimeMultiplier',\n ]);\n\n // Object methods\n vtkProp(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProp');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Prop/index.js","import { vec3, quat, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkProp from 'vtk.js/Sources/Rendering/Core/Prop';\n\nfunction notImplemented(method) {\n return () => macro.vtkErrorMacro(`vtkProp3D::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkProp3D methods\n// ----------------------------------------------------------------------------\n\nfunction vtkProp3D(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkProp3D');\n\n publicAPI.addPosition = (deltaXYZ) => {\n model.position = model.position.map(\n (value, index) => value + deltaXYZ[index]\n );\n publicAPI.modified();\n };\n\n publicAPI.getOrientationWXYZ = () => {\n const q = quat.create();\n mat4.getRotation(q, model.rotation);\n const oaxis = vec3.create();\n const w = quat.getAxisAngle(oaxis, q);\n return [vtkMath.degreesFromRadians(w), oaxis[0], oaxis[1], oaxis[2]];\n };\n\n // FIXME\n publicAPI.addOrientation = notImplemented('addOrientation');\n publicAPI.getOrientation = notImplemented('getOrientation');\n publicAPI.setOrientation = notImplemented('setOrientation');\n\n publicAPI.rotateX = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateX(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateY = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateY(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateZ = (val) => {\n if (val === 0.0) {\n return;\n }\n mat4.rotateZ(\n model.rotation,\n model.rotation,\n vtkMath.radiansFromDegrees(val)\n );\n publicAPI.modified();\n };\n\n publicAPI.rotateWXYZ = (degrees, x, y, z) => {\n if (degrees === 0.0 || (x === 0.0 && y === 0.0 && z === 0.0)) {\n return;\n }\n\n // convert to radians\n const angle = vtkMath.radiansFromDegrees(degrees);\n\n const q = quat.create();\n quat.setAxisAngle(q, [x, y, z], angle);\n\n const quatMat = mat4.create();\n mat4.fromQuat(quatMat, q);\n mat4.multiply(model.rotation, model.rotation, quatMat);\n publicAPI.modified();\n };\n\n publicAPI.setUserMatrix = (matrix) => {\n mat4.copy(model.userMatrix, matrix);\n publicAPI.modified();\n };\n\n publicAPI.getMatrix = () => {\n publicAPI.computeMatrix();\n return model.matrix;\n };\n\n publicAPI.computeMatrix = () => {\n // check whether or not need to rebuild the matrix\n if (publicAPI.getMTime() > model.matrixMTime.getMTime()) {\n mat4.identity(model.matrix);\n if (model.userMatrix) {\n mat4.multiply(model.matrix, model.matrix, model.userMatrix);\n }\n mat4.translate(model.matrix, model.matrix, model.origin);\n mat4.translate(model.matrix, model.matrix, model.position);\n mat4.multiply(model.matrix, model.matrix, model.rotation);\n mat4.scale(model.matrix, model.matrix, model.scale);\n mat4.translate(model.matrix, model.matrix, [\n -model.origin[0],\n -model.origin[1],\n -model.origin[2],\n ]);\n mat4.transpose(model.matrix, model.matrix);\n\n // check for identity\n model.isIdentity = true;\n for (let i = 0; i < 4; ++i) {\n for (let j = 0; j < 4; ++j) {\n if ((i === j ? 1.0 : 0.0) !== model.matrix[i + j * 4]) {\n model.isIdentity = false;\n }\n }\n }\n model.matrixMTime.modified();\n }\n };\n\n publicAPI.getCenter = () => vtkBoundingBox.getCenter(model.bounds);\n publicAPI.getLength = () => vtkBoundingBox.getLength(model.bounds);\n publicAPI.getXRange = () => vtkBoundingBox.getXRange(model.bounds);\n publicAPI.getYRange = () => vtkBoundingBox.getYRange(model.bounds);\n publicAPI.getZRange = () => vtkBoundingBox.getZRange(model.bounds);\n\n publicAPI.getUserMatrix = () => model.userMatrix;\n\n function updateIdentityFlag() {\n publicAPI.computeMatrix();\n }\n\n publicAPI.onModified(updateIdentityFlag);\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n origin: [0, 0, 0],\n position: [0, 0, 0],\n rotation: null,\n scale: [1, 1, 1],\n bounds: [1, -1, 1, -1, 1, -1],\n\n userMatrix: null,\n userMatrixMTime: null,\n\n cachedProp3D: null,\n isIdentity: true,\n matrixMTime: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkProp.extend(publicAPI, model, initialValues);\n\n model.matrixMTime = {};\n macro.obj(model.matrixMTime);\n\n // Build VTK API\n macro.get(publicAPI, model, ['bounds', 'isIdentity']);\n macro.setGetArray(\n publicAPI,\n model,\n ['origin', 'position', 'orientation', 'scale'],\n 3\n );\n\n // Object internal instance\n model.matrix = mat4.create();\n model.rotation = mat4.create();\n model.userMatrix = mat4.create();\n model.transform = null; // FIXME\n\n // Object methods\n vtkProp3D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkProp3D');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Prop3D/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkRenderWindow methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderWindow(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderWindow');\n\n // Add renderer\n publicAPI.addRenderer = (renderer) => {\n if (publicAPI.hasRenderer(renderer)) {\n return;\n }\n renderer.setRenderWindow(publicAPI);\n model.renderers.push(renderer);\n\n // for (this->Renderers->InitTraversal(rsit);\n // (aren = this->Renderers->GetNextRenderer(rsit)); )\n // {\n // aren->SetAllocatedRenderTime\n // (1.0/(this->DesiredUpdateRate*this->Renderers->GetNumberOfItems()));\n // }\n\n publicAPI.modified();\n };\n\n // Remove renderer\n publicAPI.removeRenderer = (renderer) => {\n model.renderers = model.renderers.filter((r) => r !== renderer);\n publicAPI.modified();\n };\n\n publicAPI.hasRenderer = (ren) => model.renderers.indexOf(ren) !== -1;\n\n // Add renderer\n publicAPI.addView = (view) => {\n if (publicAPI.hasView(view)) {\n return;\n }\n view.setRenderable(publicAPI);\n model.views.push(view);\n publicAPI.modified();\n };\n\n // Remove renderer\n publicAPI.removeView = (view) => {\n model.views = model.views.filter((r) => r !== view);\n publicAPI.modified();\n };\n\n publicAPI.hasView = (view) => model.views.indexOf(view) !== -1;\n\n publicAPI.render = () => {\n if (model.interactor) {\n model.interactor.render();\n } else {\n model.views.forEach((view) => view.traverseAllPasses());\n }\n };\n\n publicAPI.getStatistics = () => {\n const results = { propCount: 0 };\n model.renderers.forEach((ren) => {\n const props = ren.getViewProps();\n props.forEach((prop) => {\n results.propCount += 1;\n const mpr = prop.getMapper();\n if (mpr && mpr.getPrimativeCount) {\n const pcount = mpr.getPrimativeCount();\n Object.keys(pcount).forEach((keyName) => {\n if (!results[keyName]) {\n results[keyName] = 0;\n }\n results[keyName] += pcount[keyName];\n });\n }\n });\n });\n results.str = Object.keys(results)\n .map((keyName) => `${keyName}: ${results[keyName]}`)\n .join('\\n');\n return results;\n };\n\n publicAPI.captureImages = (format = 'image/png') => {\n publicAPI.render();\n return model.views\n .map(\n (view) => (view.captureImage ? view.captureImage(format) : undefined)\n )\n .filter((i) => !!i);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nexport const DEFAULT_VALUES = {\n renderers: [],\n views: [],\n interactor: null,\n neverRendered: true,\n numberOfLayers: 1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, ['interactor', 'numberOfLayers', 'views']);\n macro.get(publicAPI, model, ['neverRendered']);\n macro.getArray(publicAPI, model, ['renderers']);\n macro.event(publicAPI, model, 'completion');\n\n // Object methods\n vtkRenderWindow(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderWindow');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindow/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkInteractorStyleTrackballCamera from 'vtk.js/Sources/Interaction/Style/InteractorStyleTrackballCamera';\nimport Constants from 'vtk.js/Sources/Rendering/Core/RenderWindowInteractor/Constants';\n\nconst { Device, Input } = Constants;\nconst { vtkWarningMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// Global methods\n// ----------------------------------------------------------------------------\n\nconst deviceInputMap = {\n 'OpenVR Gamepad': [\n Input.TrackPad,\n Input.Trigger,\n Input.Grip,\n Input.ApplicationMenu,\n ],\n};\n\nconst eventsWeHandle = [\n 'Animation',\n 'Enter',\n 'Leave',\n 'MouseMove',\n 'LeftButtonPress',\n 'LeftButtonRelease',\n 'MiddleButtonPress',\n 'MiddleButtonRelease',\n 'RightButtonPress',\n 'RightButtonRelease',\n 'MouseWheelForward',\n 'MouseWheelBackward',\n 'Expose',\n 'Configure',\n 'Timer',\n 'KeyPress',\n 'KeyUp',\n 'Char',\n 'Delete',\n 'StartPinch',\n 'Pinch',\n 'EndPinch',\n 'StartPan',\n 'Pan',\n 'EndPan',\n 'StartRotate',\n 'Rotate',\n 'EndRotate',\n 'Tap',\n 'LongTap',\n 'Swipe',\n 'Button3D',\n 'Move3D',\n];\n\nfunction preventDefault(event) {\n event.stopPropagation();\n event.preventDefault();\n return false;\n}\n\n// ----------------------------------------------------------------------------\n// vtkRenderWindowInteractor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderWindowInteractor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderWindowInteractor');\n\n // Public API methods\n\n //----------------------------------------------------------------------\n publicAPI.start = () => {\n // Let the compositing handle the event loop if it wants to.\n // if (publicAPI.HasObserver(vtkCommand::StartEvent) && !publicAPI.HandleEventLoop) {\n // publicAPI.invokeEvent({ type: 'StartEvent' });\n // return;\n // }\n\n // As a convenience, initialize if we aren't initialized yet.\n if (!model.initialized) {\n publicAPI.initialize();\n if (!model.initialized) {\n return;\n }\n }\n // Pass execution to the subclass which will run the event loop,\n // this will not return until TerminateApp is called.\n publicAPI.startEventLoop();\n };\n\n //----------------------------------------------------------------------\n publicAPI.setRenderWindow = (aren) => {\n vtkErrorMacro(\n 'you want to call setView(view) instead of setRenderWindow on a vtk.js interactor'\n );\n };\n\n //----------------------------------------------------------------------\n publicAPI.setInteractorStyle = (style) => {\n if (model.interactorStyle !== style) {\n if (model.interactorStyle != null) {\n model.interactorStyle.setInteractor(null);\n }\n model.interactorStyle = style;\n if (model.interactorStyle != null) {\n if (model.interactorStyle.getInteractor() !== publicAPI) {\n model.interactorStyle.setInteractor(publicAPI);\n }\n }\n }\n };\n\n //---------------------------------------------------------------------\n publicAPI.initialize = () => {\n model.initialized = true;\n publicAPI.enable();\n publicAPI.render();\n };\n\n publicAPI.enable = () => publicAPI.setEnabled(true);\n\n publicAPI.disable = () => publicAPI.setEnabled(false);\n\n publicAPI.startEventLoop = () => vtkWarningMacro('empty event loop');\n\n publicAPI.setEventPosition = (xv, yv, zv, pointer) => {\n model.pointerIndex = pointer;\n model.lastEventPositions.set(pointer, model.eventPositions.get(pointer));\n model.eventPositions.set(pointer, { x: xv, y: yv, z: zv });\n };\n\n publicAPI.setAnimationEventPosition = (xv, yv, zv, pointer) => {\n model.lastAnimationEventPositions.set(\n pointer,\n model.animationEventPositions.get(pointer)\n );\n model.animationEventPositions.set(pointer, { x: xv, y: yv, z: zv });\n };\n\n publicAPI.getEventPosition = (pointer) => model.eventPositions.get(pointer);\n\n publicAPI.getLastEventPosition = (pointer) =>\n model.lastEventPositions.get(pointer);\n\n publicAPI.getAnimationEventPosition = (pointer) =>\n model.animationEventPositions.get(pointer);\n\n publicAPI.getLastAnimationEventPosition = (pointer) =>\n model.lastAnimationEventPositions.get(pointer);\n\n publicAPI.bindEvents = (canvas) => {\n model.canvas = canvas;\n canvas.addEventListener('contextmenu', preventDefault);\n canvas.addEventListener('click', preventDefault);\n canvas.addEventListener('mousewheel', publicAPI.handleWheel);\n canvas.addEventListener('DOMMouseScroll', publicAPI.handleWheel);\n\n canvas.addEventListener('mousedown', publicAPI.handleMouseDown);\n document\n .querySelector('body')\n .addEventListener('keypress', publicAPI.handleKeyPress);\n document\n .querySelector('body')\n .addEventListener('keyup', publicAPI.handleKeyUp);\n canvas.addEventListener('mouseup', publicAPI.handleMouseUp);\n canvas.addEventListener('mousemove', publicAPI.handleMouseMove);\n canvas.addEventListener('touchstart', publicAPI.handleTouchStart, false);\n canvas.addEventListener('touchend', publicAPI.handleTouchEnd, false);\n canvas.addEventListener('touchcancel', publicAPI.handleTouchEnd, false);\n canvas.addEventListener('touchmove', publicAPI.handleTouchMove, false);\n };\n\n publicAPI.unbindEvents = (canvas) => {\n canvas.removeEventListener('contextmenu', preventDefault);\n canvas.removeEventListener('click', preventDefault);\n canvas.removeEventListener('mousewheel', publicAPI.handleWheel);\n canvas.removeEventListener('DOMMouseScroll', publicAPI.handleWheel);\n\n canvas.removeEventListener('mousedown', publicAPI.handleMouseDown);\n document\n .querySelector('body')\n .removeEventListener('keypress', publicAPI.handleKeyPress);\n document\n .querySelector('body')\n .removeEventListener('keyup', publicAPI.handleKeyUp);\n canvas.removeEventListener('mouseup', publicAPI.handleMouseUp);\n canvas.removeEventListener('mousemove', publicAPI.handleMouseMove);\n canvas.removeEventListener('touchstart', publicAPI.handleTouchStart);\n canvas.removeEventListener('touchend', publicAPI.handleTouchEnd);\n canvas.removeEventListener('touchcancel', publicAPI.handleTouchEnd);\n canvas.removeEventListener('touchmove', publicAPI.handleTouchMove);\n };\n\n publicAPI.handleKeyPress = (event) => {\n model.controlKey = event.ctrlKey;\n model.altKey = event.altKey;\n model.shiftKey = event.shiftKey;\n model.key = event.key;\n model.keyCode = String.fromCharCode(event.charCode);\n publicAPI.keyPressEvent();\n publicAPI.charEvent();\n };\n\n publicAPI.handleKeyUp = (event) => {\n model.controlKey = event.ctrlKey;\n model.altKey = event.altKey;\n model.shiftKey = event.shiftKey;\n model.key = event.key;\n publicAPI.keyUpEvent();\n };\n\n publicAPI.handleMouseDown = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n // intentioanlly done twice\n publicAPI.setEventPosition(\n event.clientX,\n model.canvas.clientHeight - event.clientY + 1,\n 0,\n 0\n );\n publicAPI.setEventPosition(\n event.clientX,\n model.canvas.clientHeight - event.clientY + 1,\n 0,\n 0\n );\n model.controlKey = event.ctrlKey;\n model.altKey = event.altKey;\n model.shiftKey = event.shiftKey;\n switch (event.which) {\n case 1:\n publicAPI.leftButtonPressEvent();\n break;\n case 2:\n publicAPI.middleButtonPressEvent();\n break;\n case 3:\n publicAPI.rightButtonPressEvent();\n break;\n default:\n vtkErrorMacro(`Unknown mouse button pressed: ${event.which}`);\n break;\n }\n };\n\n function updateAnimationEventPositionsAtRequest(value, key) {\n model.lastAnimationEventPositions.set(key, value);\n model.animationEventPositions.set(key, value);\n }\n\n function updateAnimationEventPositionsAtHandle(value, key) {\n model.lastAnimationEventPositions.set(\n key,\n model.animationEventPositions.get(key)\n );\n model.animationEventPositions.set(key, value);\n }\n\n publicAPI.requestAnimation = (requestor) => {\n model.requestAnimationCount += 1;\n if (model.requestAnimationCount === 1) {\n model.eventPositions.forEach(updateAnimationEventPositionsAtRequest);\n model.lastFrameTime = 0.1;\n model.lastFrameStart = new Date().getTime();\n model.animationRequest = requestAnimationFrame(publicAPI.handleAnimation);\n }\n };\n\n publicAPI.isAnimating = () =>\n model.vrAnimation || model.animationRequest !== null;\n\n publicAPI.cancelAnimation = (requestor) => {\n model.requestAnimationCount -= 1;\n\n if (model.animationRequest && model.requestAnimationCount === 0) {\n cancelAnimationFrame(model.animationRequest);\n model.animationRequest = null;\n publicAPI.forceRender();\n }\n };\n\n publicAPI.switchToVRAnimation = () => {\n // cancel existing animation if any\n if (model.animationRequest) {\n cancelAnimationFrame(model.animationRequest);\n model.animationRequest = null;\n }\n model.vrAnimation = true;\n };\n\n publicAPI.returnFromVRAnimation = () => {\n model.vrAnimation = false;\n };\n\n publicAPI.updateGamepads = (displayId) => {\n const gamepads = navigator.getGamepads();\n\n // watch for when buttons change state and fire events\n for (let i = 0; i < gamepads.length; ++i) {\n const gp = gamepads[i];\n if (gp && gp.displayId === displayId) {\n if (!(gp.index in model.lastGamepadValues)) {\n model.lastGamepadValues[gp.index] = { buttons: {} };\n }\n for (let b = 0; b < gp.buttons.length; ++b) {\n if (!(b in model.lastGamepadValues[gp.index].buttons)) {\n model.lastGamepadValues[gp.index].buttons[b] = false;\n }\n if (\n model.lastGamepadValues[gp.index].buttons[b] !==\n gp.buttons[b].pressed\n ) {\n publicAPI.button3DEvent({\n gamepad: gp,\n position: gp.pose.position,\n orientation: gp.pose.orientation,\n pressed: gp.buttons[b].pressed,\n device:\n gp.hand === 'left'\n ? Device.LeftController\n : Device.RightController,\n input:\n deviceInputMap[gp.id] && deviceInputMap[gp.id][b]\n ? deviceInputMap[gp.id][b]\n : Input.Trigger,\n });\n model.lastGamepadValues[gp.index].buttons[b] =\n gp.buttons[b].pressed;\n }\n if (model.lastGamepadValues[gp.index].buttons[b]) {\n publicAPI.move3DEvent({\n gamepad: gp,\n position: gp.pose.position,\n orientation: gp.pose.orientation,\n device:\n gp.hand === 'left'\n ? Device.LeftController\n : Device.RightController,\n });\n }\n }\n }\n }\n };\n\n publicAPI.handleMouseMove = (event) => {\n publicAPI.setEventPosition(\n event.clientX,\n model.canvas.clientHeight - event.clientY + 1,\n 0,\n 0\n );\n // Do not consume event for move\n // event.stopPropagation();\n // event.preventDefault();\n publicAPI.setPointerIndex(0);\n publicAPI.mouseMoveEvent();\n };\n\n publicAPI.handleAnimation = () => {\n const currTime = new Date().getTime();\n if (model.FrameTime === -1.0) {\n model.lastFrameTime = 0.1;\n } else {\n model.lastFrameTime = (currTime - model.lastFrameStart) / 1000.0;\n }\n model.lastFrameTime = Math.max(0.01, model.lastFrameTime);\n model.lastFrameStart = currTime;\n model.eventPositions.forEach(updateAnimationEventPositionsAtHandle);\n publicAPI.animationEvent();\n publicAPI.forceRender();\n model.animationRequest = requestAnimationFrame(publicAPI.handleAnimation);\n };\n\n publicAPI.handleWheel = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n let wheelDelta = 0;\n // let mode = '';\n if (event.wheelDeltaX === undefined) {\n // mode = 'detail';\n wheelDelta = -event.detail * 2;\n } else {\n // mode = 'wheelDeltaY';\n wheelDelta = event.wheelDeltaY;\n }\n publicAPI.setScale(\n publicAPI.getScale() * Math.max(0.01, (wheelDelta + 1000.0) / 1000.0)\n );\n\n publicAPI.pinchEvent();\n\n // start a timer to keep us animating while we get wheel events\n if (model.wheelTimeoutID === 0) {\n publicAPI.requestAnimation(publicAPI);\n model.wheelTimeoutID = setTimeout(() => {\n publicAPI.cancelAnimation(publicAPI);\n model.wheelTimeoutID = 0;\n }, 200);\n } else {\n clearTimeout(model.wheelTimeoutID);\n model.wheelTimeoutID = setTimeout(() => {\n publicAPI.cancelAnimation(publicAPI);\n model.wheelTimeoutID = 0;\n }, 200);\n }\n };\n\n publicAPI.handleMouseUp = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n publicAPI.setEventPosition(\n event.clientX,\n model.canvas.clientHeight - event.clientY + 1,\n 0,\n 0\n );\n switch (event.which) {\n case 1:\n publicAPI.leftButtonReleaseEvent();\n break;\n case 2:\n publicAPI.middleButtonReleaseEvent();\n break;\n case 3:\n publicAPI.rightButtonReleaseEvent();\n break;\n default:\n vtkErrorMacro(`Unknown mouse button released: ${event.which}`);\n break;\n }\n };\n\n publicAPI.handleTouchStart = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n const touches = event.changedTouches;\n for (let i = 0; i < touches.length; i++) {\n const touch = touches[i];\n publicAPI.setEventPosition(\n touch.clientX,\n model.canvas.clientHeight - touch.clientY + 1,\n 0,\n touch.identifier\n );\n publicAPI.setPointerIndex(touch.identifier);\n publicAPI.startTouchEvent();\n }\n };\n\n publicAPI.handleTouchMove = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n const touches = event.changedTouches;\n for (let i = 0; i < touches.length; i++) {\n const touch = touches[i];\n publicAPI.setEventPosition(\n touch.clientX,\n model.canvas.clientHeight - touch.clientY + 1,\n 0,\n touch.identifier\n );\n publicAPI.setPointerIndex(touch.identifier);\n publicAPI.mouseMoveEvent();\n }\n };\n\n publicAPI.handleTouchEnd = (event) => {\n event.stopPropagation();\n event.preventDefault();\n\n const touches = event.changedTouches;\n for (let i = 0; i < touches.length; i++) {\n const touch = touches[i];\n publicAPI.setEventPosition(\n touch.clientX,\n model.canvas.clientHeight - touch.clientY + 1,\n 0,\n touch.identifier\n );\n publicAPI.setPointerIndex(touch.identifier);\n publicAPI.endTouchEvent();\n }\n };\n\n publicAPI.setView = (val) => {\n if (model.view === val) {\n return;\n }\n model.view = val;\n model.view.getRenderable().setInteractor(publicAPI);\n publicAPI.modified();\n };\n\n publicAPI.findPokedRenderer = (x = 0, y = 0) => {\n const rc = model.view.getRenderable().getRenderersByReference();\n let interactiveren = null;\n let viewportren = null;\n let currentRenderer = null;\n\n let count = rc.length;\n while (count--) {\n const aren = rc[count];\n if (model.view.isInViewport(x, y, aren) && aren.getInteractive()) {\n currentRenderer = aren;\n }\n\n if (interactiveren === null && aren.getInteractive()) {\n // Save this renderer in case we can't find one in the viewport that\n // is interactive.\n interactiveren = aren;\n }\n if (viewportren === null && model.view.isInViewport(x, y, aren)) {\n // Save this renderer in case we can't find one in the viewport that\n // is interactive.\n viewportren = aren;\n }\n }\n\n // We must have a value. If we found an interactive renderer before, that's\n // better than a non-interactive renderer.\n if (currentRenderer === null) {\n currentRenderer = interactiveren;\n }\n\n // We must have a value. If we found a renderer that is in the viewport,\n // that is better than any old viewport (but not as good as an interactive\n // one).\n if (currentRenderer === null) {\n currentRenderer = viewportren;\n }\n\n // We must have a value - take anything.\n if (currentRenderer == null) {\n currentRenderer = rc[0];\n }\n\n return currentRenderer;\n };\n\n //----------------------------------------------------------------------\n publicAPI.forceRender = () => {\n if (model.view && model.enabled && model.enableRender) {\n model.view.traverseAllPasses();\n }\n // outside the above test so that third-party code can redirect\n // the render to the appropriate class\n publicAPI.invokeRenderEvent();\n };\n\n // only render if we are not animating. If we are animating\n // then renders will happen naturally anyhow and we definitely\n // do not want extra renders as the make the apparent interaction\n // rate slower.\n publicAPI.render = () => {\n if (model.requestAnimationCount === 0) {\n publicAPI.forceRender();\n }\n };\n\n // create the generic Event methods\n eventsWeHandle.forEach((eventName) => {\n const lowerFirst = eventName.charAt(0).toLowerCase() + eventName.slice(1);\n publicAPI[`${lowerFirst}Event`] = (arg) => {\n if (!model.enabled) {\n return;\n }\n publicAPI[`invoke${eventName}`]({ type: eventName, calldata: arg });\n };\n });\n\n //------------------------------------------------------------------\n publicAPI.animationEvent = () => {\n if (!model.enabled) {\n return;\n }\n\n // are we translating multitouch into gestures?\n if (model.recognizeGestures && model.pointersDownCount > 1) {\n publicAPI.recognizeGesture('Animation');\n } else {\n publicAPI.invokeAnimation({ type: 'Animation' });\n }\n };\n\n //------------------------------------------------------------------\n publicAPI.mouseMoveEvent = () => {\n if (!model.enabled) {\n return;\n }\n\n // are we translating multitouch into gestures?\n if (model.recognizeGestures && model.pointersDownCount > 1) {\n publicAPI.recognizeGesture('MouseMove');\n } else {\n publicAPI.invokeMouseMove({ type: 'MouseMove' });\n }\n };\n\n // we know we are in multitouch now, so start recognizing\n publicAPI.recognizeGesture = (event) => {\n // more than two pointers we ignore\n if (model.pointersDownCount > 2) {\n return;\n }\n\n // store the initial positions\n if (event === 'LeftButtonPress') {\n model.pointersDown.forEach((value, key) => {\n model.startingEventPositions.set(key, model.eventPositions.get(key));\n });\n // we do not know what the gesture is yet\n model.currentGesture = 'Start';\n return;\n }\n\n // end the gesture if needed\n if (event === 'LeftButtonRelease') {\n if (model.currentGesture === 'Pinch') {\n model.interactorStyle.setAnimationStateOff();\n publicAPI.render();\n publicAPI.endPinchEvent();\n }\n if (model.currentGesture === 'Rotate') {\n model.interactorStyle.setAnimationStateOff();\n publicAPI.render();\n publicAPI.endRotateEvent();\n }\n if (model.currentGesture === 'Pan') {\n model.interactorStyle.setAnimationStateOff();\n publicAPI.render();\n publicAPI.endPanEvent();\n }\n model.currentGesture = 'Start';\n return;\n }\n\n // what are the two pointers we are working with\n let count = 0;\n const posVals = [];\n const startVals = [];\n model.pointersDown.forEach((value, key) => {\n posVals[count] =\n model.animationRequest === null\n ? model.eventPositions.get(key)\n : model.animationEventPositions.get(key);\n startVals[count] = model.startingEventPositions.get(key);\n count++;\n });\n\n // The meat of the algorithm\n // on move events we analyze them to determine what type\n // of movement it is and then deal with it.\n // calculate the distances\n const originalDistance = Math.sqrt(\n (startVals[0].x - startVals[1].x) * (startVals[0].x - startVals[1].x) +\n (startVals[0].y - startVals[1].y) * (startVals[0].y - startVals[1].y)\n );\n const newDistance = Math.sqrt(\n (posVals[0].x - posVals[1].x) * (posVals[0].x - posVals[1].x) +\n (posVals[0].y - posVals[1].y) * (posVals[0].y - posVals[1].y)\n );\n\n // calculate rotations\n let originalAngle = vtkMath.degreesFromRadians(\n Math.atan2(\n startVals[1].y - startVals[0].y,\n startVals[1].x - startVals[0].x\n )\n );\n let newAngle = vtkMath.degreesFromRadians(\n Math.atan2(posVals[1].y - posVals[0].y, posVals[1].x - posVals[0].x)\n );\n\n // angles are cyclic so watch for that, 1 and 359 are only 2 apart :)\n let angleDeviation = newAngle - originalAngle;\n newAngle = newAngle + 180.0 >= 360.0 ? newAngle - 180.0 : newAngle + 180.0;\n originalAngle =\n originalAngle + 180.0 >= 360.0\n ? originalAngle - 180.0\n : originalAngle + 180.0;\n if (Math.abs(newAngle - originalAngle) < Math.abs(angleDeviation)) {\n angleDeviation = newAngle - originalAngle;\n }\n\n // calculate the translations\n const trans = [];\n trans[0] =\n (posVals[0].x - startVals[0].x + posVals[1].x - startVals[1].x) / 2.0;\n trans[1] =\n (posVals[0].y - startVals[0].y + posVals[1].y - startVals[1].y) / 2.0;\n\n if (event === 'MouseMove') {\n // OK we want to\n // - immediately respond to the user\n // - allow the user to zoom without panning (saves focal point)\n // - allow the user to rotate without panning (saves focal point)\n\n // do we know what gesture we are doing yet? If not\n // see if we can figure it out\n if (model.currentGesture === 'Start') {\n // pinch is a move to/from the center point\n // rotate is a move along the circumference\n // pan is a move of the center point\n // compute the distance along each of these axes in pixels\n // the first to break thresh wins\n let thresh =\n 0.01 *\n Math.sqrt(\n model.canvas.clientWidth * model.canvas.clientWidth +\n model.canvas.clientHeight * model.canvas.clientHeight\n );\n if (thresh < 15.0) {\n thresh = 15.0;\n }\n const pinchDistance = Math.abs(newDistance - originalDistance);\n const rotateDistance =\n newDistance * 3.1415926 * Math.abs(angleDeviation) / 360.0;\n const panDistance = Math.sqrt(\n trans[0] * trans[0] + trans[1] * trans[1]\n );\n if (\n pinchDistance > thresh &&\n pinchDistance > rotateDistance &&\n pinchDistance > panDistance\n ) {\n model.currentGesture = 'Pinch';\n model.scale = 1.0;\n publicAPI.startPinchEvent();\n model.interactorStyle.setAnimationStateOn();\n } else if (rotateDistance > thresh && rotateDistance > panDistance) {\n model.currentGesture = 'Rotate';\n model.rotation = 0.0;\n publicAPI.startRotateEvent();\n model.interactorStyle.setAnimationStateOn();\n } else if (panDistance > thresh) {\n model.currentGesture = 'Pan';\n model.translation[0] = 0.0;\n model.translation[1] = 0.0;\n publicAPI.startPanEvent();\n model.interactorStyle.setAnimationStateOn();\n }\n }\n }\n\n if (event === 'Animation') {\n // if we have found a specific type of movement then\n // handle it\n if (model.currentGesture === 'Rotate') {\n publicAPI.setRotation(angleDeviation);\n publicAPI.rotateEvent();\n }\n\n if (model.currentGesture === 'Pinch') {\n publicAPI.setScale(newDistance / originalDistance);\n publicAPI.pinchEvent();\n }\n\n if (model.currentGesture === 'Pan') {\n publicAPI.setTranslation(trans);\n publicAPI.panEvent();\n }\n }\n };\n\n publicAPI.setScale = (scale) => {\n model.lastScale = model.scale;\n if (model.scale !== scale) {\n model.scale = scale;\n publicAPI.modified();\n }\n };\n\n publicAPI.setRotation = (rot) => {\n model.lastRotation = model.rotation;\n if (model.rotation !== rot) {\n model.rotation = rot;\n publicAPI.modified();\n }\n };\n\n publicAPI.setTranslation = (trans) => {\n model.lastTranslation = model.translation;\n if (model.translation !== trans) {\n model.translation = trans;\n publicAPI.modified();\n }\n };\n\n //------------------------------------------------------------------\n publicAPI.startTouchEvent = () => {\n if (!model.enabled) {\n return;\n }\n\n // are we translating multitouch into gestures?\n if (model.recognizeGestures) {\n if (!model.pointersDown.has(model.pointerIndex)) {\n model.pointersDown.set(model.pointerIndex, 1);\n model.pointersDownCount++;\n }\n // do we have multitouch\n if (model.pointersDownCount > 1) {\n // did we just transition to multitouch?\n if (model.pointersDownCount === 2) {\n publicAPI.invokeLeftButtonRelease({ type: 'LeftButtonRelease' });\n }\n // handle the gesture\n publicAPI.recognizeGesture('LeftButtonPress');\n return;\n }\n }\n\n publicAPI.invokeLeftButtonPress({ type: 'LeftButtonPress' });\n };\n\n //------------------------------------------------------------------\n publicAPI.endTouchEvent = () => {\n if (!model.enabled) {\n return;\n }\n\n // are we translating multitouch into gestures?\n if (model.recognizeGestures) {\n if (model.pointersDown.has(model.pointerIndex)) {\n // do we have multitouch\n if (model.pointersDownCount > 1) {\n // handle the gesture\n publicAPI.recognizeGesture('LeftButtonRelease');\n }\n model.pointersDown.delete(model.pointerIndex);\n if (model.startingEventPositions.get(model.pointerIndex)) {\n model.startingEventPositions.delete(model.pointerIndex);\n }\n if (model.eventPositions.get(model.pointerIndex)) {\n model.eventPositions.delete(model.pointerIndex);\n }\n if (model.lastEventPositions.get(model.pointerIndex)) {\n model.lastEventPositions.delete(model.pointerIndex);\n }\n model.pointersDownCount--;\n publicAPI.invokeLeftButtonRelease({ type: 'LeftButtonRelease' });\n }\n } else {\n publicAPI.invokeLeftButtonRelease({ type: 'LeftButtonRelease' });\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n startingEventPositions: null,\n pointersDown: null,\n pointersDownCount: 0,\n pointerIndex: 0,\n renderWindow: null,\n interactorStyle: null,\n picker: null,\n pickingManager: null,\n initialized: false,\n enabled: false,\n enableRender: true,\n lightFollowCamera: true,\n desiredUpdateRate: 30.0,\n stillUpdateRate: 2.0,\n shiftKey: false,\n altKey: false,\n controlKey: false,\n keyCode: 0,\n key: '',\n canvas: null,\n view: null,\n recognizeGestures: true,\n currentGesture: 'Start',\n scale: 1.0,\n lastScale: 1.0,\n translation: [],\n lastTranslation: [],\n rotation: 0.0,\n lastRotation: 0.0,\n animationRequest: null,\n requestAnimationCount: 0,\n lastFrameTime: 0.1,\n wheelTimeoutID: 0,\n lastGamepadValues: {},\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Internal objects initialization\n model.eventPositions = new Map();\n model.lastEventPositions = new Map();\n model.pointersDown = new Map();\n model.startingEventPositions = new Map();\n model.animationEventPositions = new Map();\n model.lastAnimationEventPositions = new Map();\n\n // Object methods\n macro.obj(publicAPI, model);\n\n macro.event(publicAPI, model, 'RenderEvent');\n eventsWeHandle.forEach((eventName) =>\n macro.event(publicAPI, model, eventName)\n );\n\n // Create get-only macros\n macro.get(publicAPI, model, [\n 'initialized',\n 'canvas',\n 'enabled',\n 'enableRender',\n 'scale',\n 'lastScale',\n 'rotation',\n 'lastRotation',\n 'interactorStyle',\n 'lastFrameTime',\n 'view',\n ]);\n\n // Create get-set macros\n macro.setGet(publicAPI, model, [\n 'pointerIndex',\n 'lightFollowCamera',\n 'enabled',\n 'shiftKey',\n 'controlKey',\n 'altKey',\n 'keyCode',\n 'recognizeGestures',\n 'desiredUpdateRate',\n 'stillUpdateRate',\n 'key',\n 'picker',\n ]);\n\n macro.getArray(publicAPI, model, ['translation', 'lastTranslation']);\n\n // For more macro methods, see \"Sources/macro.js\"\n\n // Object specific methods\n vtkRenderWindowInteractor(publicAPI, model);\n\n publicAPI.setInteractorStyle(vtkInteractorStyleTrackballCamera.newInstance());\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkRenderWindowInteractor'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/RenderWindowInteractor/index.js","import { mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkCamera from 'vtk.js/Sources/Rendering/Core/Camera';\nimport vtkLight from 'vtk.js/Sources/Rendering/Core/Light';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkViewport from 'vtk.js/Sources/Rendering/Core/Viewport';\nimport vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\n\nconst { vtkDebugMacro, vtkErrorMacro, vtkWarningMacro } = macro;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkRenderer::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkRenderer methods\n// ----------------------------------------------------------------------------\n\nfunction vtkRenderer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkRenderer');\n\n // make sure background has 4 entries. Default to opaque black\n if (!model.background) model.background = [0, 0, 0, 1];\n while (model.background.length < 3) model.background.push(0);\n if (model.background.length === 3) model.background.push(1);\n\n // Events\n const COMPUTE_VISIBLE_PROP_BOUNDS_EVENT = {\n type: 'ComputeVisiblePropBoundsEvent',\n renderer: publicAPI,\n };\n const RESET_CAMERA_CLIPPING_RANGE_EVENT = {\n type: 'ResetCameraClippingRangeEvent',\n renderer: publicAPI,\n };\n const RESET_CAMERA_EVENT = {\n type: 'ResetCameraEvent',\n renderer: publicAPI,\n };\n\n publicAPI.updateCamera = () => {\n if (!model.activeCamera) {\n vtkDebugMacro('No cameras are on, creating one.');\n // the get method will automagically create a camera\n // and reset it since one hasn't been specified yet.\n publicAPI.getActiveCameraAndResetIfCreated();\n }\n\n // update the viewing transformation\n model.activeCamera.render(publicAPI);\n\n return true;\n };\n\n publicAPI.updateLightsGeometryToFollowCamera = () => {\n // only update the light's geometry if this Renderer is tracking\n // this lights. That allows one renderer to view the lights that\n // another renderer is setting up.\n const camera = publicAPI.getActiveCameraAndResetIfCreated();\n\n model.lights.forEach((light) => {\n if (light.lightTypeIsSceneLight()) {\n // Do nothing. Don't reset the transform matrix because applications\n // may have set a custom matrix. Only reset the transform matrix in\n // vtkLight::SetLightTypeToSceneLight()\n } else if (light.lightTypeIsHeadLight()) {\n // update position and orientation of light to match camera.\n light.setPositionFrom(camera.getPositionByReference());\n light.setFocalPointFrom(camera.getFocalPointByReference());\n light.modified(camera.getMTime());\n } else if (light.lightTypeIsCameraLight()) {\n vtkErrorMacro('camera lights not supported yet', light);\n } else {\n vtkErrorMacro('light has unknown light type', light);\n }\n });\n };\n\n publicAPI.updateLightGeometry = () => {\n if (model.lightFollowCamera) {\n // only update the light's geometry if this Renderer is tracking\n // this lights. That allows one renderer to view the lights that\n // another renderer is setting up.\n return publicAPI.updateLightsGeometryToFollowCamera();\n }\n return true;\n };\n\n publicAPI.allocateTime = notImplemented('allocateTime');\n publicAPI.updateGeometry = notImplemented('updateGeometry');\n\n publicAPI.getVTKWindow = () => model.renderWindow;\n\n publicAPI.setLayer = (layer) => {\n vtkDebugMacro(\n publicAPI.getClassName(),\n publicAPI,\n 'setting Layer to ',\n layer\n );\n if (model.layer !== layer) {\n model.layer = layer;\n publicAPI.modified();\n }\n publicAPI.setPreserveColorBuffer(!!layer);\n };\n\n publicAPI.setActiveCamera = (camera) => {\n if (model.activeCamera === camera) {\n return false;\n }\n\n model.activeCamera = camera;\n publicAPI.modified();\n publicAPI.invokeEvent({ type: 'ActiveCameraEvent', camera });\n return true;\n };\n\n publicAPI.makeCamera = () => {\n const camera = vtkCamera.newInstance();\n publicAPI.invokeEvent({ type: 'CreateCameraEvent', camera });\n return camera;\n };\n\n // Replace the set/get macro method\n publicAPI.getActiveCamera = () => {\n if (!model.activeCamera) {\n model.activeCamera = publicAPI.makeCamera();\n }\n\n return model.activeCamera;\n };\n\n publicAPI.getActiveCameraAndResetIfCreated = () => {\n if (!model.activeCamera) {\n publicAPI.getActiveCamera();\n publicAPI.resetCamera();\n }\n\n return model.activeCamera;\n };\n\n publicAPI.addActor = publicAPI.addViewProp;\n publicAPI.addVolume = publicAPI.addViewProp;\n\n publicAPI.removeActor = (actor) => {\n model.actors = model.actors.filter((a) => a !== actor);\n publicAPI.removeViewProp(actor);\n };\n\n publicAPI.removeVolume = (volume) => {\n model.volumes = model.volumes.filter((v) => v !== volume);\n publicAPI.removeViewProp(volume);\n };\n\n publicAPI.addLight = (light) => {\n model.lights = [].concat(model.lights, light);\n publicAPI.modified();\n };\n\n publicAPI.getActors = () => {\n model.actors = [];\n model.props.forEach((prop) => {\n model.actors = model.actors.concat(prop.getActors());\n });\n return model.actors;\n };\n\n publicAPI.getVolumes = () => {\n model.volumes = [];\n model.props.forEach((prop) => {\n model.volumes = model.volumes.concat(prop.getVolumes());\n });\n return model.volumes;\n };\n\n publicAPI.removeLight = (light) => {\n model.lights = model.lights.filter((l) => l !== light);\n publicAPI.modified();\n };\n\n publicAPI.removeAllLights = () => {\n model.lights = [];\n };\n\n // FIXME\n publicAPI.addCuller = notImplemented('addCuller');\n publicAPI.removeCuller = notImplemented('removeCuller');\n\n publicAPI.setLightCollection = (lights) => {\n model.lights = lights;\n publicAPI.modified();\n };\n\n publicAPI.makeLight = vtkLight.newInstance;\n\n publicAPI.createLight = () => {\n if (!model.automaticLightCreation) {\n return;\n }\n\n if (model.createdLight) {\n publicAPI.removeLight(model.createdLight);\n model.createdLight.delete();\n model.createdLight = null;\n }\n\n model.createdLight = publicAPI.makeLight();\n publicAPI.addLight(model.createdLight);\n\n model.createdLight.setLightTypeToHeadLight();\n\n // set these values just to have a good default should LightFollowCamera\n // be turned off.\n model.createdLight.setPosition(publicAPI.getActiveCamera().getPosition());\n model.createdLight.setFocalPoint(\n publicAPI.getActiveCamera().getFocalPoint()\n );\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.normalizedDisplayToWorld = (x, y, z, aspect) => {\n const vpd = publicAPI.normalizedDisplayToView(x, y, z);\n\n return publicAPI.viewToWorld(vpd[0], vpd[1], vpd[2], aspect);\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.worldToNormalizedDisplay = (x, y, z, aspect) => {\n const vpd = publicAPI.worldToView(x, y, z);\n\n return publicAPI.viewToNormalizedDisplay(vpd[0], vpd[1], vpd[2], aspect);\n };\n\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.viewToWorld = (x, y, z, aspect) => {\n if (model.activeCamera === null) {\n vtkErrorMacro(\n 'ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0'\n );\n return [0, 0, 0];\n }\n\n // get the perspective transformation from the active camera\n const matrix = model.activeCamera.getCompositeProjectionMatrix(\n aspect,\n -1.0,\n 1.0\n );\n\n mat4.invert(matrix, matrix);\n mat4.transpose(matrix, matrix);\n\n // Transform point to world coordinates\n const result = vec3.fromValues(x, y, z);\n vec3.transformMat4(result, result, matrix);\n return [result[0], result[1], result[2]];\n };\n\n // Convert world point coordinates to view coordinates.\n // requires the aspect ratio of the viewport as X/Y\n publicAPI.worldToView = (x, y, z, aspect) => {\n if (model.activeCamera === null) {\n vtkErrorMacro(\n 'ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0'\n );\n return [0, 0, 0];\n }\n\n // get the perspective transformation from the active camera\n const matrix = model.activeCamera.getCompositeProjectionMatrix(\n aspect,\n -1.0,\n 1.0\n );\n mat4.transpose(matrix, matrix);\n\n const result = vec3.fromValues(x, y, z);\n vec3.transformMat4(result, result, matrix);\n return [result[0], result[1], result[2]];\n };\n\n publicAPI.computeVisiblePropBounds = () => {\n model.allBounds[0] = vtkBoundingBox.INIT_BOUNDS[0];\n model.allBounds[1] = vtkBoundingBox.INIT_BOUNDS[1];\n model.allBounds[2] = vtkBoundingBox.INIT_BOUNDS[2];\n model.allBounds[3] = vtkBoundingBox.INIT_BOUNDS[3];\n model.allBounds[4] = vtkBoundingBox.INIT_BOUNDS[4];\n model.allBounds[5] = vtkBoundingBox.INIT_BOUNDS[5];\n let nothingVisible = true;\n\n publicAPI.invokeEvent(COMPUTE_VISIBLE_PROP_BOUNDS_EVENT);\n\n // loop through all props\n for (let index = 0; index < model.props.length; ++index) {\n const prop = model.props[index];\n if (prop.getVisibility() && prop.getUseBounds()) {\n const bounds = prop.getBounds();\n if (bounds && vtkMath.areBoundsInitialized(bounds)) {\n nothingVisible = false;\n\n if (bounds[0] < model.allBounds[0]) {\n model.allBounds[0] = bounds[0];\n }\n if (bounds[1] > model.allBounds[1]) {\n model.allBounds[1] = bounds[1];\n }\n if (bounds[2] < model.allBounds[2]) {\n model.allBounds[2] = bounds[2];\n }\n if (bounds[3] > model.allBounds[3]) {\n model.allBounds[3] = bounds[3];\n }\n if (bounds[4] < model.allBounds[4]) {\n model.allBounds[4] = bounds[4];\n }\n if (bounds[5] > model.allBounds[5]) {\n model.allBounds[5] = bounds[5];\n }\n }\n }\n }\n\n if (nothingVisible) {\n vtkMath.uninitializeBounds(model.allBounds);\n vtkDebugMacro(\"Can't compute bounds, no 3D props are visible\");\n }\n\n return model.allBounds;\n };\n\n publicAPI.resetCamera = (bounds = null) => {\n const boundsToUse = bounds || publicAPI.computeVisiblePropBounds();\n const center = [0, 0, 0];\n\n if (!vtkMath.areBoundsInitialized(boundsToUse)) {\n vtkDebugMacro('Cannot reset camera!');\n return false;\n }\n\n let vn = null;\n\n if (publicAPI.getActiveCamera()) {\n vn = model.activeCamera.getViewPlaneNormal();\n } else {\n vtkErrorMacro('Trying to reset non-existant camera');\n return false;\n }\n\n // Reset the perspective zoom factors, otherwise subsequent zooms will cause\n // the view angle to become very small and cause bad depth sorting.\n model.activeCamera.setViewAngle(30.0);\n\n center[0] = (boundsToUse[0] + boundsToUse[1]) / 2.0;\n center[1] = (boundsToUse[2] + boundsToUse[3]) / 2.0;\n center[2] = (boundsToUse[4] + boundsToUse[5]) / 2.0;\n\n let w1 = boundsToUse[1] - boundsToUse[0];\n let w2 = boundsToUse[3] - boundsToUse[2];\n let w3 = boundsToUse[5] - boundsToUse[4];\n w1 *= w1;\n w2 *= w2;\n w3 *= w3;\n let radius = w1 + w2 + w3;\n\n // If we have just a single point, pick a radius of 1.0\n radius = radius === 0 ? 1.0 : radius;\n\n // compute the radius of the enclosing sphere\n radius = Math.sqrt(radius) * 0.5;\n\n // default so that the bounding sphere fits within the view fustrum\n\n // compute the distance from the intersection of the view frustum with the\n // bounding sphere. Basically in 2D draw a circle representing the bounding\n // sphere in 2D then draw a horizontal line going out from the center of\n // the circle. That is the camera view. Then draw a line from the camera\n // position to the point where it intersects the circle. (it will be tangent\n // to the circle at this point, this is important, only go to the tangent\n // point, do not draw all the way to the view plane). Then draw the radius\n // from the tangent point to the center of the circle. You will note that\n // this forms a right triangle with one side being the radius, another being\n // the target distance for the camera, then just find the target dist using\n // a sin.\n const angle = vtkMath.radiansFromDegrees(model.activeCamera.getViewAngle());\n const parallelScale = radius;\n const distance = radius / Math.sin(angle * 0.5);\n\n // check view-up vector against view plane normal\n const vup = model.activeCamera.getViewUp();\n if (Math.abs(vtkMath.dot(vup, vn)) > 0.999) {\n vtkWarningMacro('Resetting view-up since view plane normal is parallel');\n model.activeCamera.setViewUp(-vup[2], vup[0], vup[1]);\n }\n\n // update the camera\n model.activeCamera.setFocalPoint(center[0], center[1], center[2]);\n model.activeCamera.setPosition(\n center[0] + distance * vn[0],\n center[1] + distance * vn[1],\n center[2] + distance * vn[2]\n );\n\n publicAPI.resetCameraClippingRange(boundsToUse);\n\n // setup default parallel scale\n model.activeCamera.setParallelScale(parallelScale);\n\n // update reasonable world to physical values\n model.activeCamera.setPhysicalScale(1.0 / radius);\n model.activeCamera.setPhysicalTranslation(\n -center[0],\n -center[1],\n -center[2]\n );\n\n // Here to let parallel/distributed compositing intercept\n // and do the right thing.\n publicAPI.invokeEvent(RESET_CAMERA_EVENT);\n\n return true;\n };\n\n publicAPI.resetCameraClippingRange = (bounds = null) => {\n const boundsToUse = bounds || publicAPI.computeVisiblePropBounds();\n\n if (!vtkMath.areBoundsInitialized(boundsToUse)) {\n vtkDebugMacro('Cannot reset camera clipping range!');\n return false;\n }\n\n // Make sure we have an active camera\n publicAPI.getActiveCameraAndResetIfCreated();\n if (!model.activeCamera) {\n vtkErrorMacro('Trying to reset clipping range of non-existant camera');\n return false;\n }\n\n let vn = null;\n let position = null;\n vn = model.activeCamera.getViewPlaneNormalByReference();\n position = model.activeCamera.getPositionByReference();\n\n const a = -vn[0];\n const b = -vn[1];\n const c = -vn[2];\n const d = -(a * position[0] + b * position[1] + c * position[2]);\n\n // Set the max near clipping plane and the min far clipping plane\n const range = [\n a * boundsToUse[0] + b * boundsToUse[2] + c * boundsToUse[4] + d,\n 1e-18,\n ];\n\n // Find the closest / farthest bounding box vertex\n for (let k = 0; k < 2; k++) {\n for (let j = 0; j < 2; j++) {\n for (let i = 0; i < 2; i++) {\n const dist =\n a * boundsToUse[i] +\n b * boundsToUse[2 + j] +\n c * boundsToUse[4 + k] +\n d;\n range[0] = dist < range[0] ? dist : range[0];\n range[1] = dist > range[1] ? dist : range[1];\n }\n }\n }\n\n // do not let far - near be less than 0.1 of the window height\n // this is for cases such as 2D images which may have zero range\n let minGap = 0.0;\n if (model.activeCamera.getParallelProjection()) {\n minGap = 0.1 * model.activeCamera.getParallelScale();\n } else {\n const angle = vtkMath.radiansFromDegrees(\n model.activeCamera.getViewAngle()\n );\n minGap = 0.2 * Math.tan(angle / 2.0) * range[1];\n }\n\n if (range[1] - range[0] < minGap) {\n minGap = minGap - range[1] + range[0];\n range[1] += minGap / 2.0;\n range[0] -= minGap / 2.0;\n }\n\n // Do not let the range behind the camera throw off the calculation.\n if (range[0] < 0.0) {\n range[0] = 0.0;\n }\n\n // Give ourselves a little breathing room\n range[0] =\n 0.99 * range[0] - (range[1] - range[0]) * model.clippingRangeExpansion;\n range[1] =\n 1.01 * range[1] + (range[1] - range[0]) * model.clippingRangeExpansion;\n\n // Make sure near is not bigger than far\n range[0] = range[0] >= range[1] ? 0.01 * range[1] : range[0];\n\n // Make sure near is at least some fraction of far - this prevents near\n // from being behind the camera or too close in front. How close is too\n // close depends on the resolution of the depth buffer\n if (!model.nearClippingPlaneTolerance) {\n model.nearClippingPlaneTolerance = 0.01;\n }\n\n // make sure the front clipping range is not too far from the far clippnig\n // range, this is to make sure that the zbuffer resolution is effectively\n // used\n if (range[0] < model.nearClippingPlaneTolerance * range[1]) {\n range[0] = model.nearClippingPlaneTolerance * range[1];\n }\n model.activeCamera.setClippingRange(range[0], range[1]);\n\n // Here to let parallel/distributed compositing intercept\n // and do the right thing.\n publicAPI.invokeEvent(RESET_CAMERA_CLIPPING_RANGE_EVENT);\n return false;\n };\n\n publicAPI.setRenderWindow = (renderWindow) => {\n if (renderWindow !== model.renderWindow) {\n model.vtkWindow = renderWindow;\n model.renderWindow = renderWindow;\n }\n };\n\n publicAPI.visibleActorCount = () =>\n model.props.filter((prop) => prop.getVisibility()).length;\n publicAPI.visibleVolumeCount = publicAPI.visibleActorCount;\n\n publicAPI.getMTime = () => {\n let m1 = model.mtime;\n const m2 = model.activeCamera ? model.activeCamera.getMTime() : 0;\n if (m2 > m1) {\n m1 = m2;\n }\n const m3 = model.createdLight ? model.createdLight.getMTime() : 0;\n if (m3 > m1) {\n m1 = m3;\n }\n return m1;\n };\n\n // FIXME\n publicAPI.pickProp = notImplemented('pickProp');\n publicAPI.pickRender = notImplemented('PickRender');\n publicAPI.pickGeometry = notImplemented('PickGeometry');\n\n // ExpandBounds => global\n\n publicAPI.getTransparent = () => !!model.preserveColorBuffer;\n\n // FIXME\n publicAPI.getTiledAspectRatio = notImplemented('GetTiledAspectRatio');\n\n publicAPI.isActiveCameraCreated = () => !!model.activeCamera;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n pickedProp: null,\n activeCamera: null,\n\n allBounds: [],\n ambient: [1, 1, 1],\n\n allocatedRenderTime: 100,\n timeFactor: 1,\n\n createdLight: null,\n automaticLightCreation: true,\n\n twoSidedLighting: true,\n lastRenderTimeInSeconds: -1,\n\n renderWindow: null,\n lights: [],\n actors: [],\n volumes: [],\n\n lightFollowCamera: true,\n\n numberOfPropsRendered: 0,\n\n propArray: null,\n\n pathArray: null,\n\n layer: 1,\n preserveColorBuffer: false,\n preserveDepthBuffer: false,\n\n computeVisiblePropBounds: vtkMath.createUninitializedBounds(),\n\n interactive: true,\n\n nearClippingPlaneTolerance: 0,\n clippingRangeExpansion: 0.05,\n\n erase: true,\n draw: true,\n\n useShadows: false,\n\n useDepthPeeling: false,\n occlusionRatio: 0,\n maximumNumberOfPeels: 4,\n\n selector: null,\n delegate: null,\n\n texturedBackground: false,\n backgroundTexture: null,\n\n pass: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewport.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.get(publicAPI, model, [\n 'renderWindow',\n\n 'allocatedRenderTime',\n 'timeFactor',\n\n 'lastRenderTimeInSeconds',\n 'numberOfPropsRendered',\n 'lastRenderingUsedDepthPeeling',\n\n 'selector',\n ]);\n macro.setGet(publicAPI, model, [\n 'twoSidedLighting',\n 'lightFollowCamera',\n 'automaticLightCreation',\n 'erase',\n 'draw',\n 'nearClippingPlaneTolerance',\n 'clippingRangeExpansion',\n 'backingStore',\n 'interactive',\n 'layer',\n 'preserveColorBuffer',\n 'preserveDepthBuffer',\n 'useDepthPeeling',\n 'occlusionRatio',\n 'maximumNumberOfPeels',\n 'delegate',\n 'backgroundTexture',\n 'texturedBackground',\n 'useShadows',\n 'pass',\n ]);\n macro.getArray(publicAPI, model, ['actors', 'volumes', 'lights']);\n macro.setGetArray(publicAPI, model, ['background'], 4, 1.0);\n\n // Object methods\n vtkRenderer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkRenderer');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Renderer/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\nfunction notImplemented(method) {\n return () => vtkErrorMacro(`vtkViewport::${method} - NOT IMPLEMENTED`);\n}\n\n// ----------------------------------------------------------------------------\n// vtkViewport methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewport(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkViewport');\n\n // Public API methods\n publicAPI.getViewProps = () => model.props;\n publicAPI.hasViewProp = (prop) =>\n !!model.props.filter((item) => item === prop).length;\n publicAPI.addViewProp = (prop) => {\n if (prop && !publicAPI.hasViewProp(prop)) {\n model.props = model.props.concat(prop);\n }\n };\n\n publicAPI.removeViewProp = (prop) => {\n const newPropList = model.props.filter((item) => item !== prop);\n if (model.props.length !== newPropList.length) {\n model.props = newPropList;\n }\n };\n\n publicAPI.removeAllViewProps = () => {\n model.props = [];\n };\n\n // this method get all the props including any nested props\n publicAPI.getViewPropsWithNestedProps = () => {\n model.allprops = model.props;\n for (let index = 0; index < model.props.length; ++index) {\n const prop = model.props[index];\n if (prop.getNestedProps()) {\n model.allprops = model.allprops.concat(prop.getNestedProps());\n }\n }\n return model.allprops;\n };\n\n publicAPI.addActor2D = publicAPI.addViewProp;\n publicAPI.removeActor2D = (prop) => {\n // VTK way: model.actors2D.RemoveItem(prop);\n publicAPI.removeViewProp(prop);\n };\n\n publicAPI.getActors2D = () => {\n model.actors2D = [];\n model.props.forEach((prop) => {\n model.actors2D = model.actors2D.concat(prop.getActors2D());\n });\n return model.actors2D;\n };\n\n publicAPI.displayToView = () =>\n vtkErrorMacro('call displayToView on your view instead');\n publicAPI.viewToDisplay = () =>\n vtkErrorMacro('callviewtodisplay on your view instead');\n publicAPI.getSize = () => vtkErrorMacro('call getSize on your View instead');\n\n publicAPI.normalizedDisplayToView = (x, y, z) => {\n // first to normalized viewport\n const nvp = publicAPI.normalizedDisplayToNormalizedViewport(x, y, z);\n\n // then to view\n return publicAPI.normalizedViewportToView(nvp[0], nvp[1], nvp[2]);\n };\n\n publicAPI.normalizedDisplayToNormalizedViewport = (x, y, z) => {\n const scale = [\n model.viewport[2] - model.viewport[0],\n model.viewport[3] - model.viewport[1],\n ];\n return [\n (x - model.viewport[0]) / scale[0],\n (y - model.viewport[1]) / scale[1],\n z,\n ];\n };\n\n publicAPI.normalizedViewportToView = (x, y, z) => [\n x * 2.0 - 1.0,\n y * 2.0 - 1.0,\n z * 2.0 - 1.0,\n ];\n\n publicAPI.viewToNormalizedDisplay = (x, y, z) => {\n // first to nvp\n const nvp = publicAPI.viewToNormalizedViewport(x, y, z);\n\n // then to ndp\n return publicAPI.normalizedViewportToNormalizedDisplay(\n nvp[0],\n nvp[1],\n nvp[2]\n );\n };\n\n publicAPI.normalizedViewportToNormalizedDisplay = (x, y, z) => {\n const scale = [\n model.viewport[2] - model.viewport[0],\n model.viewport[3] - model.viewport[1],\n ];\n return [\n x * scale[0] + model.viewport[0],\n y * scale[1] + model.viewport[1],\n z,\n ];\n };\n\n publicAPI.viewToNormalizedViewport = (x, y, z) => [\n (x + 1.0) * 0.5,\n (y + 1.0) * 0.5,\n (z + 1.0) * 0.5,\n ];\n\n publicAPI.PickPropFrom = notImplemented('PickPropFrom');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n vtkWindow: null,\n background: [0, 0, 0],\n background2: [0.2, 0.2, 0.2],\n gradientBackground: false,\n viewport: [0, 0, 1, 1],\n aspect: [1, 1],\n pixelAspect: [1, 1],\n props: [],\n actors2D: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.event(publicAPI, model, 'event');\n\n macro.setGetArray(publicAPI, model, ['viewport'], 4);\n\n macro.setGetArray(publicAPI, model, ['background', 'background2'], 3);\n\n vtkViewport(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkViewport');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/Viewport/index.js","export const InterpolationType = {\n NEAREST: 0,\n LINEAR: 1,\n FAST_LINEAR: 2,\n};\n\nexport default {\n InterpolationType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/Core/VolumeProperty/Constants.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLActor(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLActor');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLRenderWindow = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderWindow'\n );\n model.context = model.openGLRenderWindow.getContext();\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getTextures());\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n\n // we store textures and mapper\n model.ogltextures = null;\n model.activeTextures = null;\n for (let index = 0; index < model.children.length; index++) {\n const child = model.children[index];\n if (child.isA('vtkOpenGLTexture')) {\n if (!model.ogltextures) {\n model.ogltextures = [];\n }\n model.ogltextures.push(child);\n } else {\n model.oglmapper = child;\n }\n }\n }\n };\n\n publicAPI.traverseOpaqueZBufferPass = (renderPass) => {\n publicAPI.traverseOpaquePass(renderPass);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.oglmapper.traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.oglmapper.traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.activateTextures = () => {\n // always traverse textures first, then mapper\n if (!model.ogltextures) {\n return;\n }\n\n model.activeTextures = [];\n for (let index = 0; index < model.ogltextures.length; index++) {\n const child = model.ogltextures[index];\n child.render();\n if (child.getHandle()) {\n model.activeTextures.push(child);\n }\n }\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (model.renderable.getIsOpaque()) {\n renderPass.incrementOpaqueActorCount();\n } else {\n renderPass.incrementTranslucentActorCount();\n }\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass, renderPass) =>\n publicAPI.opaquePass(prepass, renderPass);\n\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow.enableDepthMask();\n publicAPI.activateTextures();\n } else if (model.activeTextures) {\n for (let index = 0; index < model.activeTextures.length; index++) {\n model.activeTextures[index].deactivate();\n }\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow.disableDepthMask();\n publicAPI.activateTextures();\n } else if (model.activeTextures) {\n for (let index = 0; index < model.activeTextures.length; index++) {\n model.activeTextures[index].deactivate();\n }\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n model.renderable.computeMatrix();\n mat4.copy(model.keyMatrices.mcwc, model.renderable.getMatrix());\n mat4.transpose(model.keyMatrices.mcwc, model.keyMatrices.mcwc);\n\n if (model.renderable.getIsIdentity()) {\n mat3.identity(model.keyMatrices.normalMatrix);\n } else {\n mat3.fromMat4(model.keyMatrices.normalMatrix, model.keyMatrices.mcwc);\n mat3.invert(\n model.keyMatrices.normalMatrix,\n model.keyMatrices.normalMatrix\n );\n }\n model.keyMatrixTime.modified();\n }\n\n return model.keyMatrices;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n keyMatrixTime: null,\n keyMatrices: null,\n activeTextures: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime, { mtime: 0 });\n model.keyMatrices = {\n normalMatrix: mat3.create(),\n mcwc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n macro.get(publicAPI, model, ['activeTextures']);\n\n // Object methods\n vtkOpenGLActor(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Actor/index.js","import * as macro from '../../../macro';\nimport vtkViewNode from '../../SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLActor2D(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLActor2D');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNodes(model.renderable.getTextures());\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n if (!child.isA('vtkOpenGLTexture')) {\n child.traverse(renderPass);\n }\n });\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n if (!child.isA('vtkOpenGLTexture')) {\n child.traverse(renderPass);\n }\n });\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.activateTextures = () => {\n // always traverse textures first, then mapper\n model.activeTextures = [];\n model.children.forEach((child) => {\n if (child.isA('vtkOpenGLTexture')) {\n child.render();\n if (child.getHandle()) {\n model.activeTextures.push(child);\n }\n }\n });\n };\n\n // Renders myself\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(true);\n publicAPI.activateTextures();\n } else {\n // deactivate textures\n model.activeTextures.forEach((child) => {\n child.deactivate();\n });\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n publicAPI.activateTextures();\n } else {\n // deactivate textures\n model.activeTextures.forEach((child) => {\n child.deactivate();\n });\n model.context.depthMask(true);\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n activeTextures: [],\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n macro.get(publicAPI, model, ['activeTextures']);\n\n // Object methods\n vtkOpenGLActor2D(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Actor2D/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport * as macro from '../../../macro';\nimport vtkViewNode from '../../SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLCamera methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLCamera(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLCamera');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n\n // Renders myself\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n const tsize = model.openGLRenderer.getTiledSizeAndOrigin();\n model.context.viewport(\n tsize.lowerLeftU,\n tsize.lowerLeftV,\n tsize.usize,\n tsize.vsize\n );\n model.context.scissor(\n tsize.lowerLeftU,\n tsize.lowerLeftV,\n tsize.usize,\n tsize.vsize\n );\n }\n };\n publicAPI.translucentPass = publicAPI.opaquePass;\n publicAPI.opaqueZBufferPass = publicAPI.opaquePass;\n publicAPI.volumePass = publicAPI.opaquePass;\n\n publicAPI.getKeyMatrices = (ren) => {\n // has the camera changed?\n if (\n ren !== model.lastRenderer ||\n model.openGLRenderWindow.getMTime() > model.keyMatrixTime.getMTime() ||\n publicAPI.getMTime() > model.keyMatrixTime.getMTime() ||\n ren.getMTime() > model.keyMatrixTime.getMTime()\n ) {\n mat4.copy(model.keyMatrices.wcvc, model.renderable.getViewMatrix());\n\n mat3.fromMat4(model.keyMatrices.normalMatrix, model.keyMatrices.wcvc);\n mat3.invert(\n model.keyMatrices.normalMatrix,\n model.keyMatrices.normalMatrix\n );\n mat4.transpose(model.keyMatrices.wcvc, model.keyMatrices.wcvc);\n\n const aspectRatio = model.openGLRenderer.getAspectRatio();\n\n mat4.copy(\n model.keyMatrices.vcdc,\n model.renderable.getProjectionMatrix(aspectRatio, -1, 1)\n );\n mat4.transpose(model.keyMatrices.vcdc, model.keyMatrices.vcdc);\n\n mat4.multiply(\n model.keyMatrices.wcdc,\n model.keyMatrices.vcdc,\n model.keyMatrices.wcvc\n );\n\n model.keyMatrixTime.modified();\n model.lastRenderer = ren;\n }\n\n return model.keyMatrices;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n lastRenderer: null,\n keyMatrixTime: null,\n keyMatrices: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime);\n\n model.keyMatrices = {\n normalMatrix: mat3.create(),\n vcdc: mat4.create(),\n wcvc: mat4.create(),\n wcdc: mat4.create(),\n };\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context', 'keyMatrixTime']);\n\n // Object methods\n vtkOpenGLCamera(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Camera/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\n\nconst { vtkDebugMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLCellArrayBufferObject methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLCellArrayBufferObject(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLCellArrayBufferObject');\n\n publicAPI.setType(ObjectType.ARRAY_BUFFER);\n\n publicAPI.createVBO = (cellArray, inRep, outRep, options) => {\n if (!cellArray.getData() || !cellArray.getData().length) {\n model.elementCount = 0;\n return 0;\n }\n\n // Figure out how big each block will be, currently 6 or 7 floats.\n model.blockSize = 3;\n model.vertexOffset = 0;\n model.normalOffset = 0;\n model.tCoordOffset = 0;\n model.tCoordComponents = 0;\n model.colorComponents = 0;\n model.colorOffset = 0;\n\n const pointData = options.points.getData();\n let normalData = null;\n let tcoordData = null;\n let colorData = null;\n\n const colorComponents = options.colors\n ? options.colors.getNumberOfComponents()\n : 0;\n const textureComponents = options.tcoords\n ? options.tcoords.getNumberOfComponents()\n : 0;\n\n // the values of 4 below are because floats are 4 bytes\n\n if (options.normals) {\n model.normalOffset = 4 * model.blockSize;\n model.blockSize += 3;\n normalData = options.normals.getData();\n }\n\n if (options.tcoords) {\n model.tCoordOffset = 4 * model.blockSize;\n model.tCoordComponents = textureComponents;\n model.blockSize += textureComponents;\n tcoordData = options.tcoords.getData();\n }\n\n if (options.colors) {\n model.colorComponents = options.colors.getNumberOfComponents();\n model.colorOffset = 0;\n colorData = options.colors.getData();\n if (!model.colorBO) {\n model.colorBO = vtkBufferObject.newInstance();\n }\n model.colorBO.setOpenGLRenderWindow(model.openGLRenderWindow);\n } else {\n model.colorBO = null;\n }\n model.stride = 4 * model.blockSize;\n\n let pointIdx = 0;\n let normalIdx = 0;\n let tcoordIdx = 0;\n let colorIdx = 0;\n let cellCount = 0;\n let addAPoint;\n\n const cellBuilders = {\n // easy, every input point becomes an output point\n anythingToPoints(numPoints, cellPts, offset) {\n for (let i = 0; i < numPoints; ++i) {\n addAPoint(cellPts[offset + i]);\n }\n },\n linesToWireframe(numPoints, cellPts, offset) {\n // for lines we add a bunch of segments\n for (let i = 0; i < numPoints - 1; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1]);\n }\n },\n polysToWireframe(numPoints, cellPts, offset) {\n // for polys we add a bunch of segments and close it\n for (let i = 0; i < numPoints; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + (i + 1) % numPoints]);\n }\n },\n stripsToWireframe(numPoints, cellPts, offset) {\n // for strips we add a bunch of segments and close it\n for (let i = 0; i < numPoints - 1; ++i) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1]);\n }\n for (let i = 0; i < numPoints - 2; i++) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 2]);\n }\n },\n polysToSurface(npts, cellPts, offset) {\n if (npts < 3) {\n // ignore degenerate triangles\n vtkDebugMacro('skipping degenerate triangle');\n } else {\n for (let i = 0; i < npts - 2; i++) {\n addAPoint(cellPts[offset + 0]);\n addAPoint(cellPts[offset + i + 1]);\n addAPoint(cellPts[offset + i + 2]);\n }\n }\n },\n stripsToSurface(npts, cellPts, offset) {\n for (let i = 0; i < npts - 2; i++) {\n addAPoint(cellPts[offset + i]);\n addAPoint(cellPts[offset + i + 1 + i % 2]);\n addAPoint(cellPts[offset + i + 1 + (i + 1) % 2]);\n }\n },\n };\n\n const cellCounters = {\n // easy, every input point becomes an output point\n anythingToPoints(numPoints, cellPts) {\n return numPoints;\n },\n linesToWireframe(numPoints, cellPts) {\n return (numPoints - 1) * 2;\n },\n polysToWireframe(numPoints, cellPts) {\n return numPoints * 2;\n },\n stripsToWireframe(numPoints, cellPts) {\n return numPoints * 4 - 6;\n },\n polysToSurface(npts, cellPts) {\n if (npts < 3) {\n return 0;\n }\n return (npts - 2) * 3;\n },\n stripsToSurface(npts, cellPts, offset) {\n return (npts - 2) * 3;\n },\n };\n\n let func = null;\n let countFunc = null;\n if (outRep === Representation.POINTS || inRep === 'verts') {\n func = cellBuilders.anythingToPoints;\n countFunc = cellCounters.anythingToPoints;\n } else if (outRep === Representation.WIREFRAME || inRep === 'lines') {\n func = cellBuilders[`${inRep}ToWireframe`];\n countFunc = cellCounters[`${inRep}ToWireframe`];\n } else {\n func = cellBuilders[`${inRep}ToSurface`];\n countFunc = cellCounters[`${inRep}ToSurface`];\n }\n\n const array = cellArray.getData();\n const size = array.length;\n let caboCount = 0;\n for (let index = 0; index < size; ) {\n caboCount += countFunc(array[index], array);\n index += array[index] + 1;\n }\n\n let packedUCVBO = null;\n const packedVBO = new Float32Array(caboCount * model.blockSize);\n if (colorData) {\n packedUCVBO = new Uint8Array(caboCount * 4);\n }\n let vboidx = 0;\n let ucidx = 0;\n\n addAPoint = function addAPointFunc(i) {\n // Vertices\n pointIdx = i * 3;\n\n packedVBO[vboidx++] = pointData[pointIdx++];\n packedVBO[vboidx++] = pointData[pointIdx++];\n packedVBO[vboidx++] = pointData[pointIdx++];\n\n if (normalData !== null) {\n if (options.haveCellNormals) {\n normalIdx = (cellCount + options.cellOffset) * 3;\n } else {\n normalIdx = i * 3;\n }\n packedVBO[vboidx++] = normalData[normalIdx++];\n packedVBO[vboidx++] = normalData[normalIdx++];\n packedVBO[vboidx++] = normalData[normalIdx++];\n }\n\n if (tcoordData !== null) {\n tcoordIdx = i * textureComponents;\n for (let j = 0; j < textureComponents; ++j) {\n packedVBO[vboidx++] = tcoordData[tcoordIdx++];\n }\n }\n\n if (colorData !== null) {\n if (options.haveCellScalars) {\n colorIdx = (cellCount + options.cellOffset) * colorComponents;\n } else {\n colorIdx = i * colorComponents;\n }\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] = colorData[colorIdx++];\n packedUCVBO[ucidx++] =\n colorComponents === 4 ? colorData[colorIdx++] : 255;\n }\n };\n\n for (let index = 0; index < size; ) {\n func(array[index], array, index + 1);\n index += array[index] + 1;\n cellCount++;\n }\n model.elementCount = caboCount;\n publicAPI.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n if (model.colorBO) {\n model.colorBOStride = 4;\n model.colorBO.upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n }\n return cellCount;\n };\n\n publicAPI.setCoordShiftAndScaleMethod = (shiftScaleMethod) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n\n publicAPI.setCoordShift = (shiftArray) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n\n publicAPI.setCoordScale = (scaleArray) => {\n vtkErrorMacro('coordinate shift and scale not yet implemented');\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n elementCount: 0,\n stride: 0,\n colorBOStride: 0,\n vertexOffset: 0,\n normalOffset: 0,\n tCoordOffset: 0,\n tCoordComponents: 0,\n colorOffset: 0,\n colorComponents: 0,\n tcoordBO: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkBufferObject.extend(publicAPI, model, initialValues);\n\n macro.setGet(publicAPI, model, [\n 'colorBO',\n 'elementCount',\n 'stride',\n 'colorBOStride',\n 'vertexOffset',\n 'normalOffset',\n 'tCoordOffset',\n 'tCoordComponents',\n 'colorOffset',\n 'colorComponents',\n ]);\n\n // Object specific methods\n vtkOpenGLCellArrayBufferObject(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/CellArrayBufferObject/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkRenderPass from 'vtk.js/Sources/Rendering/SceneGraph/RenderPass';\n\n// ----------------------------------------------------------------------------\n\nfunction vtkForwardPass(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkForwardPass');\n\n // this pass implements a forward rendering pipeline\n // if both volumes and opaque geometry are present\n // it will mix the two together by capturing a zbuffer\n // first\n publicAPI.traverse = (viewNode, parent = null) => {\n if (model.deleted) {\n return;\n }\n\n // we just render our delegates in order\n model.currentParent = parent;\n\n // build\n publicAPI.setCurrentOperation('buildPass');\n viewNode.traverse(publicAPI);\n\n // iterate over renderers\n const renderers = viewNode.getChildren();\n for (let index = 0; index < renderers.length; index++) {\n const renNode = renderers[index];\n\n // check for both opaque and volume actors\n model.opaqueActorCount = 0;\n model.translucentActorCount = 0;\n model.volumeCount = 0;\n publicAPI.setCurrentOperation('queryPass');\n\n renNode.traverse(publicAPI);\n\n // do we need to capture a zbuffer?\n if (\n (model.opaqueActorCount > 0 && model.volumeCount > 0) ||\n model.depthRequested\n ) {\n const size = viewNode.getSize();\n // make sure the framebuffer is setup\n if (model.framebuffer === null) {\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n }\n model.framebuffer.setOpenGLRenderWindow(viewNode);\n model.framebuffer.saveCurrentBindingsAndBuffers();\n const fbSize = model.framebuffer.getSize();\n if (fbSize === null || fbSize[0] !== size[0] || fbSize[1] !== size[1]) {\n model.framebuffer.create(size[0], size[1]);\n model.framebuffer.populateFramebuffer();\n }\n model.framebuffer.bind();\n publicAPI.setCurrentOperation('opaqueZBufferPass');\n renNode.traverse(publicAPI);\n model.framebuffer.restorePreviousBindingsAndBuffers();\n }\n\n publicAPI.setCurrentOperation('cameraPass');\n renNode.traverse(publicAPI);\n if (model.opaqueActorCount > 0) {\n publicAPI.setCurrentOperation('opaquePass');\n renNode.traverse(publicAPI);\n }\n if (model.translucentActorCount > 0) {\n publicAPI.setCurrentOperation('translucentPass');\n renNode.traverse(publicAPI);\n }\n if (model.volumeCount > 0) {\n publicAPI.setCurrentOperation('volumePass');\n renNode.traverse(publicAPI);\n }\n }\n };\n\n publicAPI.getZBufferTexture = () => {\n if (model.framebuffer) {\n return model.framebuffer.getColorTexture();\n }\n return null;\n };\n\n publicAPI.incrementOpaqueActorCount = () => model.opaqueActorCount++;\n publicAPI.incrementTranslucentActorCount = () =>\n model.translucentActorCount++;\n publicAPI.incrementVolumeCount = () => model.volumeCount++;\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n opaqueActorCount: 0,\n translucentActorCount: 0,\n volumeCount: 0,\n framebuffer: null,\n depthRequested: false,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n vtkRenderPass.extend(publicAPI, model, initialValues);\n\n macro.get(publicAPI, model, ['framebuffer']);\n macro.setGet(publicAPI, model, ['depthRequested']);\n\n // Object methods\n vtkForwardPass(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkForwardPass');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ForwardPass/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkProperty from 'vtk.js/Sources/Rendering/Core/Property';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\n\nconst { vtkErrorMacro } = macro;\nconst { Representation } = vtkProperty;\nconst { ObjectType } = vtkBufferObject;\n\nconst StartEvent = { type: 'StartEvent' };\nconst EndEvent = { type: 'EndEvent' };\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLSphereMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLGlyph3DMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLGlyph3DMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.renderPiece = (ren, actor) => {\n publicAPI.invokeEvent(StartEvent);\n if (!model.renderable.getStatic()) {\n model.renderable.update();\n }\n model.currentInput = model.renderable.getInputData(1);\n publicAPI.invokeEvent(EndEvent);\n\n if (model.currentInput === null) {\n vtkErrorMacro('No input!');\n return;\n }\n\n // if there are no points then we are done\n if (\n !model.currentInput.getPoints ||\n !model.currentInput.getPoints().getNumberOfValues()\n ) {\n return;\n }\n\n // apply faceCulling\n const gl = model.context;\n if (model.openGLRenderWindow.getWebgl2()) {\n model.hardwareSupport = true;\n model.extension = null;\n } else if (!model.extension) {\n model.extension = model.context.getExtension('ANGLE_instanced_arrays');\n model.hardwareSupport = !!model.extension;\n }\n\n const backfaceCulling = actor.getProperty().getBackfaceCulling();\n const frontfaceCulling = actor.getProperty().getFrontfaceCulling();\n if (!backfaceCulling && !frontfaceCulling) {\n model.openGLRenderWindow.disableCullFace();\n } else if (frontfaceCulling) {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.FRONT);\n } else {\n model.openGLRenderWindow.enableCullFace();\n gl.cullFace(gl.BACK);\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.multiply4x4WithOffset = (out, a, b, off) => {\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n\n // Cache only the current line of the second matrix\n let b0 = b[off];\n let b1 = b[off + 1];\n let b2 = b[off + 2];\n let b3 = b[off + 3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 4];\n b1 = b[off + 5];\n b2 = b[off + 6];\n b3 = b[off + 7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 8];\n b1 = b[off + 9];\n b2 = b[off + 10];\n b3 = b[off + 11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[off + 12];\n b1 = b[off + 13];\n b2 = b[off + 14];\n b3 = b[off + 15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n };\n\n publicAPI.replaceShaderNormal = (shaders, ren, actor) => {\n if (model.hardwareSupport) {\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n if (lastLightComplexity > 0) {\n let VSSource = shaders.Vertex;\n\n if (model.lastBoundBO.getCABO().getNormalOffset()) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Dec',\n [\n 'attribute vec3 normalMC;',\n 'attribute mat3 gNormal;',\n 'uniform mat3 normalMatrix;',\n 'varying vec3 normalVCVSOutput;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Normal::Impl',\n ['normalVCVSOutput = normalMatrix * gNormal * normalMC;']\n ).result;\n }\n shaders.Vertex = VSSource;\n }\n }\n superClass.replaceShaderNormal(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderColor = (shaders, ren, actor) => {\n if (model.hardwareSupport && model.renderable.getColorArray()) {\n let VSSource = shaders.Vertex;\n let GSSource = shaders.Geometry;\n let FSSource = shaders.Fragment;\n\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n\n // create the material/color property declarations, and VS implementation\n // these are always defined\n let colorDec = [\n 'uniform float ambient;',\n 'uniform float diffuse;',\n 'uniform float specular;',\n 'uniform float opacityUniform; // the fragment opacity',\n ];\n // add more for specular\n if (lastLightComplexity) {\n colorDec = colorDec.concat([\n 'uniform vec3 specularColorUniform;',\n 'uniform float specularPowerUniform;',\n ]);\n }\n\n // now handle the more complex fragment shader implementation\n // the following are always defined variables. We start\n // by assiging a default value from the uniform\n let colorImpl = [\n 'vec3 ambientColor;',\n ' vec3 diffuseColor;',\n ' float opacity;',\n ];\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' vec3 specularColor;',\n ' float specularPower;',\n ]);\n }\n colorImpl = colorImpl.concat([' opacity = opacityUniform;']);\n if (lastLightComplexity) {\n colorImpl = colorImpl.concat([\n ' specularColor = specularColorUniform;',\n ' specularPower = specularPowerUniform;',\n ]);\n }\n\n if (!model.drawingEdges) {\n colorDec = colorDec.concat(['varying vec4 vertexColorVSOutput;']);\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Dec', [\n 'attribute vec4 gColor;',\n 'varying vec4 vertexColorVSOutput;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Color::Impl', [\n 'vertexColorVSOutput = gColor;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Dec', [\n 'in vec4 vertexColorVSOutput[];',\n 'out vec4 vertexColorGSOutput;',\n ]).result;\n GSSource = vtkShaderProgram.substitute(GSSource, '//VTK::Color::Impl', [\n 'vertexColorGSOutput = vertexColorVSOutput[i];',\n ]).result;\n }\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Impl',\n colorImpl.concat([\n ' diffuseColor = vertexColorVSOutput.rgb;',\n ' ambientColor = vertexColorVSOutput.rgb;',\n ' opacity = opacity*vertexColorVSOutput.a;',\n ])\n ).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Color::Dec',\n colorDec\n ).result;\n\n shaders.Vertex = VSSource;\n shaders.Geometry = GSSource;\n shaders.Fragment = FSSource;\n }\n superClass.replaceShaderColor(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderPositionVC = (shaders, ren, actor) => {\n if (model.hardwareSupport) {\n let VSSource = shaders.Vertex;\n\n // do we need the vertex in the shader in View Coordinates\n const lastLightComplexity = model.lastBoundBO.getReferenceByName(\n 'lastLightComplexity'\n );\n if (lastLightComplexity > 0) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vec4 gVertexMC = gMatrix * vertexMC;',\n 'vertexVCVSOutput = MCVCMatrix * gVertexMC;',\n ' gl_Position = MCDCMatrix * gVertexMC;',\n ]\n ).result;\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'attribute mat4 gMatrix;',\n 'uniform mat4 MCDCMatrix;',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n } else {\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'attribute mat4 gMatrix;',\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [\n 'vec4 gVertexMC = gMatrix * vertexMC;',\n ' gl_Position = MCDCMatrix * gVertexMC;',\n ]\n ).result;\n }\n shaders.Vertex = VSSource;\n }\n superClass.replaceShaderPositionVC(shaders, ren, actor);\n };\n\n publicAPI.updateGlyphShaderParameters = (\n normalMatrixUsed,\n mcvcMatrixUsed,\n cellBO,\n carray,\n garray,\n narray,\n p\n ) => {\n const program = cellBO.getProgram();\n\n if (normalMatrixUsed) {\n const a = model.normalMatrix;\n const b = narray;\n const ofs = p * 9;\n const out = model.tmpMat3;\n\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b00 = b[ofs];\n const b01 = b[ofs + 1];\n const b02 = b[ofs + 2];\n const b10 = b[ofs + 3];\n const b11 = b[ofs + 4];\n const b12 = b[ofs + 5];\n const b20 = b[ofs + 6];\n const b21 = b[ofs + 7];\n const b22 = b[ofs + 8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n\n program.setUniformMatrix3x3('normalMatrix', model.tmpMat3);\n }\n publicAPI.multiply4x4WithOffset(\n model.tmpMat4,\n model.mcdcMatrix,\n garray,\n p * 16\n );\n program.setUniformMatrix('MCDCMatrix', model.tmpMat4);\n if (mcvcMatrixUsed) {\n publicAPI.multiply4x4WithOffset(\n model.tmpMat4,\n model.mcvcMatrix,\n garray,\n p * 16\n );\n program.setUniformMatrix('MCVCMatrix', model.tmpMat4);\n }\n\n // set color\n if (carray) {\n const cdata = carray.getData();\n model.tmpColor[0] = cdata[p * 4] / 255.0;\n model.tmpColor[1] = cdata[p * 4 + 1] / 255.0;\n model.tmpColor[2] = cdata[p * 4 + 2] / 255.0;\n program.setUniform3fArray('ambientColorUniform', model.tmpColor);\n program.setUniform3fArray('diffuseColorUniform', model.tmpColor);\n }\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const representation = actor.getProperty().getRepresentation();\n\n const gl = model.context;\n\n const drawSurfaceWithEdges =\n actor.getProperty().getEdgeVisibility() &&\n representation === Representation.SURFACE;\n\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n const actMats = model.openGLActor.getKeyMatrices();\n\n // precompute the actor+camera mats once\n mat3.multiply(\n model.normalMatrix,\n keyMats.normalMatrix,\n actMats.normalMatrix\n );\n mat4.multiply(model.mcdcMatrix, keyMats.wcdc, actMats.mcwc);\n mat4.multiply(model.mcvcMatrix, keyMats.wcvc, actMats.mcwc);\n\n const garray = model.renderable.getMatrixArray();\n const narray = model.renderable.getNormalArray();\n const carray = model.renderable.getColorArray();\n const numPts = garray.length / 16;\n\n // for every primitive type\n for (let i = model.primTypes.Start; i < model.primTypes.End; i++) {\n // if there are entries\n const cabo = model.primitives[i].getCABO();\n if (cabo.getElementCount()) {\n // are we drawing edges\n model.drawingEdges =\n drawSurfaceWithEdges &&\n (i === model.primTypes.TrisEdges ||\n i === model.primTypes.TriStripsEdges);\n publicAPI.updateShaders(model.primitives[i], ren, actor);\n const program = model.primitives[i].getProgram();\n\n const mode = publicAPI.getOpenGLMode(representation, i);\n const normalMatrixUsed = program.isUniformUsed('normalMatrix');\n const mcvcMatrixUsed = program.isUniformUsed('MCVCMatrix');\n\n if (model.hardwareSupport) {\n if (model.extension) {\n model.extension.drawArraysInstancedANGLE(\n mode,\n 0,\n cabo.getElementCount(),\n numPts\n );\n } else {\n gl.drawArraysInstanced(mode, 0, cabo.getElementCount(), numPts);\n }\n } else {\n // draw the array multiple times with different cam matrix\n for (let p = 0; p < numPts; ++p) {\n publicAPI.updateGlyphShaderParameters(\n normalMatrixUsed,\n mcvcMatrixUsed,\n model.primitives[i],\n carray,\n garray,\n narray,\n p\n );\n gl.drawArrays(mode, 0, cabo.getElementCount());\n }\n }\n }\n }\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.glyphBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (cellBO.getProgram().isAttributeUsed('gMatrix')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeMatrixWithDivisor(\n cellBO.getProgram(),\n model.matrixBuffer,\n 'gMatrix',\n 0,\n 64,\n model.context.FLOAT,\n 4,\n false,\n 1\n )\n ) {\n vtkErrorMacro('Error setting gMatrix in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gMatrix');\n }\n if (cellBO.getProgram().isAttributeUsed('gNormal')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeMatrixWithDivisor(\n cellBO.getProgram(),\n model.normalBuffer,\n 'gNormal',\n 0,\n 36,\n model.context.FLOAT,\n 3,\n false,\n 1\n )\n ) {\n vtkErrorMacro('Error setting gNormal in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gNormal');\n }\n if (cellBO.getProgram().isAttributeUsed('gColor')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArrayWithDivisor(\n cellBO.getProgram(),\n model.colorBuffer,\n 'gColor',\n 0,\n 4,\n model.context.UNSIGNED_BYTE,\n 4,\n true,\n 1,\n false\n )\n ) {\n vtkErrorMacro('Error setting gColor in shader VAO.');\n }\n } else {\n cellBO.getVAO().removeAttributeArray('gColor');\n }\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n cellBO.getAttributeUpdateTime().modified();\n return;\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n model.renderable.buildArrays();\n\n // first do a coarse check\n // Note that the actor's mtime includes it's properties mtime\n const vmtime = model.VBOBuildTime.getMTime();\n if (vmtime < model.renderable.getBuildTime().getMTime()) {\n return true;\n }\n return superClass.getNeedToRebuildBufferObjects(ren, actor);\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n if (model.hardwareSupport) {\n // update the buffer objects if needed\n const garray = model.renderable.getMatrixArray();\n const narray = model.renderable.getNormalArray();\n const carray = model.renderable.getColorArray();\n if (!model.matrixBuffer) {\n model.matrixBuffer = vtkBufferObject.newInstance();\n model.matrixBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.normalBuffer = vtkBufferObject.newInstance();\n model.normalBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorBuffer = vtkBufferObject.newInstance();\n model.colorBuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n }\n if (\n model.renderable.getBuildTime().getMTime() >\n model.glyphBOBuildTime.getMTime()\n ) {\n model.matrixBuffer.upload(garray, ObjectType.ARRAY_BUFFER);\n model.normalBuffer.upload(narray, ObjectType.ARRAY_BUFFER);\n if (carray) {\n model.colorBuffer.upload(carray.getData(), ObjectType.ARRAY_BUFFER);\n } else {\n model.colorBuffer.releaseGraphicsResources();\n }\n model.glyphBOBuildTime.modified();\n }\n }\n return superClass.buildBufferObjects(ren, actor);\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n normalMatrix: null,\n mcdcMatrix: null,\n mcwcMatrix: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n model.tmpMat3 = mat3.create();\n model.normalMatrix = mat3.create();\n model.mcdcMatrix = mat4.create();\n model.mcvcMatrix = mat4.create();\n model.tmpColor = [];\n\n model.glyphBOBuildTime = {};\n macro.obj(model.glyphBOBuildTime, { mtime: 0 });\n\n // Object methods\n vtkOpenGLGlyph3DMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLGlyph3DMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper/index.js","export const PassTypes = {\n MIN_KNOWN_PASS: 0,\n ACTOR_PASS: 0,\n COMPOSITE_INDEX_PASS: 1,\n ID_LOW24: 2,\n MAX_KNOWN_PASS: 2,\n};\n\nexport default {\n PassTypes,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants.js","import macro from 'vtk.js/Sources/macro';\nimport Constants from 'vtk.js/Sources/Rendering/OpenGL/HardwareSelector/Constants';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkSelectionNode from 'vtk.js/Sources/Common/DataModel/SelectionNode';\nimport vtkDataSet from 'vtk.js/Sources/Common/DataModel/DataSet';\n\nconst { PassTypes } = Constants;\nconst { SelectionContent, SelectionField } = vtkSelectionNode;\nconst { FieldAssociations } = vtkDataSet;\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLHardwareSelector methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLHardwareSelector(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLHardwareSelector');\n\n //----------------------------------------------------------------------------\n publicAPI.releasePixBuffers = () => {\n model.pixBuffer = [];\n };\n\n //----------------------------------------------------------------------------\n publicAPI.beginSelection = () => {\n model.openGLRenderer = model.openGLRenderWindow.getViewNodeFor(\n model.renderer\n );\n model.maxAttributeId = 0;\n\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n model.framebuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.framebuffer.saveCurrentBindingsAndBuffers();\n const size = model.openGLRenderWindow.getSize();\n model.framebuffer.create(size[0], size[1]);\n model.framebuffer.populateFramebuffer();\n\n model.openGLRenderer.clear();\n model.openGLRenderer.setSelector(publicAPI);\n model.renderer.setPreserveDepthBuffer(1);\n model.hitProps = [];\n model.props = [];\n publicAPI.releasePixBuffers();\n };\n\n //----------------------------------------------------------------------------\n publicAPI.endSelection = () => {\n model.hitProps = [];\n model.openGLRenderer.setSelector(null);\n model.renderer.setPreserveDepthBuffer(0);\n model.framebuffer.restorePreviousBindingsAndBuffers();\n };\n\n publicAPI.preCapturePass = () => {};\n\n publicAPI.postCapturePass = () => {};\n\n //----------------------------------------------------------------------------\n publicAPI.select = () => {\n let sel = null;\n if (publicAPI.captureBuffers()) {\n sel = publicAPI.generateSelection(\n model.area[0],\n model.area[1],\n model.area[2],\n model.area[3]\n );\n publicAPI.releasePixBuffers();\n }\n return sel;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.captureBuffers = () => {\n if (!model.renderer || !model.openGLRenderWindow) {\n vtkErrorMacro('Renderer and view must be set before calling Select.');\n return false;\n }\n\n model.openGLRenderer = model.openGLRenderWindow.getViewNodeFor(\n model.renderer\n );\n\n // int rgba[4];\n // rwin.getColorBufferSizes(rgba);\n // if (rgba[0] < 8 || rgba[1] < 8 || rgba[2] < 8) {\n // vtkErrorMacro(\"Color buffer depth must be atleast 8 bit. \"\n // \"Currently: \" << rgba[0] << \", \" << rgba[1] << \", \" < true;\n\n //----------------------------------------------------------------------------\n publicAPI.savePixelBuffer = (passNo) => {\n model.pixBuffer[passNo] = model.openGLRenderWindow.getPixelData(\n model.area[0],\n model.area[1],\n model.area[2],\n model.area[3]\n );\n if (passNo === PassTypes.ACTOR_PASS) {\n publicAPI.buildPropHitList(model.pixBuffer[passNo]);\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.buildPropHitList = (pixelbuffer) => {\n for (let yy = 0; yy <= model.area[3] - model.area[1]; yy++) {\n for (let xx = 0; xx <= model.area[2] - model.area[0]; xx++) {\n let val = publicAPI.convert(xx, yy, pixelbuffer);\n if (val > 0) {\n val--;\n if (model.hitProps.indexOf(val) === -1) {\n model.hitProps.push(val);\n }\n }\n }\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.renderProp = (prop) => {\n if (model.currentPass === PassTypes.ACTOR_PASS) {\n publicAPI.setPropColorValueFromInt(model.props.length + model.idOffset);\n model.props.push(prop);\n }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.renderCompositeIndex = (index) => {\n if (index > 0xffffff) {\n vtkErrorMacro('Indices > 0xffffff are not supported.');\n }\n };\n\n //----------------------------------------------------------------------------\n // TODO: make inline\n publicAPI.renderAttributeId = (attribid) => {\n if (attribid < 0) {\n // negative attribid is valid. It happens when rendering higher order\n // elements where new points are added for rendering smooth surfaces.\n return;\n }\n\n model.maxAttributeId =\n attribid > model.maxAttributeId ? attribid : model.maxAttributeId;\n\n // if (model.currentPass < PassTypes.ID_LOW24) {\n // return; // useless...\n // }\n };\n\n //----------------------------------------------------------------------------\n publicAPI.getPropFromID = (id) => {\n if (id >= 0 && id < model.props.length) {\n return model.props[id];\n }\n return null;\n };\n\n //----------------------------------------------------------------------------\n publicAPI.passTypeToString = (type) => macro.enumToString(PassTypes, type);\n\n //----------------------------------------------------------------------------\n publicAPI.isPropHit = (id) => model.hitProps.hasKey(id);\n\n publicAPI.convert = (xx, yy, pb) => {\n if (!pb) {\n return 0;\n }\n const offset = (yy * (model.area[2] - model.area[0] + 1) + xx) * 4;\n const rgb = [];\n rgb[0] = pb[offset];\n rgb[1] = pb[offset + 1];\n rgb[2] = pb[offset + 2];\n let val = rgb[2];\n val *= 256;\n val += rgb[1];\n val *= 256;\n val += rgb[0];\n return val;\n };\n\n publicAPI.setPropColorValueFromInt = (val) => {\n model.propColorValue[0] = (val % 256) / 255.0;\n model.propColorValue[1] = ((val / 256) % 256) / 255.0;\n model.propColorValue[2] = ((val / 65536) % 256) / 255.0;\n };\n\n // info has\n // valid\n // propId\n // prop\n // compositeID\n // attributeID\n\n //----------------------------------------------------------------------------\n publicAPI.getPixelInformation = (\n inDisplayPosition,\n maxDistance,\n outSelectedPosition\n ) => {\n // Base case\n const maxDist = maxDistance < 0 ? 0 : maxDistance;\n if (maxDist === 0) {\n outSelectedPosition[0] = inDisplayPosition[0];\n outSelectedPosition[1] = inDisplayPosition[1];\n if (\n inDisplayPosition[0] < model.area[0] ||\n inDisplayPosition[0] > model.area[2] ||\n inDisplayPosition[1] < model.area[1] ||\n inDisplayPosition[1] > model.area[3]\n ) {\n return null;\n }\n\n // offset inDisplayPosition based on the lower-left-corner of the Area.\n const displayPosition = [\n inDisplayPosition[0] - model.area[0],\n inDisplayPosition[1] - model.area[1],\n ];\n\n const actorid = publicAPI.convert(\n displayPosition[0],\n displayPosition[1],\n model.pixBuffer[PassTypes.ACTOR_PASS]\n );\n if (actorid <= 0) {\n // the pixel did not hit any actor.\n return null;\n }\n\n const info = {};\n info.valid = true;\n\n info.propID = actorid - model.idOffset;\n info.prop = publicAPI.getPropFromID(info.propID);\n\n // let compositeID = publicAPI.convert(\n // displayPosition[0], displayPosition[1],\n // model.pixBuffer[PassTypes.COMPOSITE_INDEX_PASS]);\n // if (compositeID < 0 || compositeID > 0xffffff) {\n // compositeID = 0;\n // }\n // info.compositeID = compositeID - model.idOffset;\n\n // const low24 = publicAPI.convert(\n // displayPosition[0], displayPosition[1], model.pixBuffer[PassTypes.ID_LOW24]);\n\n // // id 0 is reserved for nothing present.\n // info.attributeID = low24 - model.idOffset;\n // if (info.attributeID < 0) {\n // // the pixel did not hit any cell.\n // return null;\n // }\n return info;\n }\n\n // Iterate over successively growing boxes.\n // They recursively call the base case to handle single pixels.\n const dispPos = [inDisplayPosition[0], inDisplayPosition[1]];\n const curPos = [0, 0];\n let info = publicAPI.getPixelInformation(\n inDisplayPosition,\n 0,\n outSelectedPosition\n );\n if (info && info.valid) {\n return info;\n }\n for (let dist = 1; dist < maxDist; ++dist) {\n // Vertical sides of box.\n for (\n let y = dispPos[1] > dist ? dispPos[1] - dist : 0;\n y <= dispPos[1] + dist;\n ++y\n ) {\n curPos[1] = y;\n if (dispPos[0] >= dist) {\n curPos[0] = dispPos[0] - dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n curPos[0] = dispPos[0] + dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n // Horizontal sides of box.\n for (\n let x = dispPos[0] >= dist ? dispPos[0] - (dist - 1) : 0;\n x <= dispPos[0] + (dist - 1);\n ++x\n ) {\n curPos[0] = x;\n if (dispPos[1] >= dist) {\n curPos[1] = dispPos[1] - dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n curPos[1] = dispPos[1] + dist;\n info = publicAPI.getPixelInformation(curPos, 0, outSelectedPosition);\n if (info && info.valid) {\n return info;\n }\n }\n }\n\n // nothing hit.\n outSelectedPosition[0] = inDisplayPosition[0];\n outSelectedPosition[1] = inDisplayPosition[1];\n return null;\n };\n\n //-----------------------------------------------------------------------------\n publicAPI.convertSelection = (fieldassociation, dataMap) => {\n const sel = [];\n\n let count = 0;\n dataMap.forEach((value, key) => {\n const child = vtkSelectionNode.newInstance();\n child.setContentType(SelectionContent.INDICES);\n switch (fieldassociation) {\n case FieldAssociations.FIELD_ASSOCIATION_CELLS:\n child.setFieldType(SelectionField.CELL);\n break;\n case FieldAssociations.FIELD_ASSOCIATION_POINTS:\n child.setFieldType(SelectionField.POINT);\n break;\n default:\n vtkErrorMacro('Unknown field association');\n }\n child.getProperties().propID = value.info.propID;\n child.getProperties().prop = value.info.prop;\n child.getProperties().compositeID = value.info.compositeID;\n child.getProperties().pixelCount = value.pixelCount;\n\n child.setSelectionList(value.attributeIDs);\n sel[count] = child;\n count++;\n });\n\n return sel;\n };\n\n publicAPI.getInfoHash = (info) => `${info.propID} ${info.compositeID}`;\n\n //----------------------------------------------------------------------------\n publicAPI.generateSelection = (x1, y1, x2, y2) => {\n const dataMap = new Map();\n\n const outSelectedPosition = [0, 0];\n\n for (let yy = y1; yy <= y2; yy++) {\n for (let xx = x1; xx <= x2; xx++) {\n const pos = [xx, yy];\n const info = publicAPI.getPixelInformation(pos, 0, outSelectedPosition);\n if (info && info.valid) {\n const hash = publicAPI.getInfoHash(info);\n if (!dataMap.has(hash)) {\n dataMap.set(hash, {\n info,\n pixelCount: 1,\n attributeIDs: [info.attributeID],\n });\n } else {\n dataMap.get(hash).pixelCount++;\n if (\n dataMap.get(hash).attributeIDs.indexOf(info.attributeID) === -1\n ) {\n dataMap.get(hash).attributeIDs.push(info.attributeID);\n }\n }\n }\n }\n }\n return publicAPI.convertSelection(model.fieldAssociation, dataMap);\n };\n\n publicAPI.attach = (w, r) => {\n model.openGLRenderWindow = w;\n model.renderer = r;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n fieldAssociation: FieldAssociations.FIELD_ASSOCIATION_CELLS,\n renderer: null,\n area: null,\n openGLRenderWindow: null,\n openGLRenderer: null,\n currentPass: -1,\n propColorValue: null,\n props: null,\n idOffset: 1,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n model.area = [0, 0, 0, 0];\n model.propColorValue = [0, 0, 0];\n model.props = [];\n\n macro.setGet(publicAPI, model, [\n 'fieldAssociation',\n 'renderer',\n 'currentPass',\n ]);\n\n macro.setGetArray(publicAPI, model, ['area'], 4);\n macro.setGetArray(publicAPI, model, ['propColorValue'], 3);\n macro.event(publicAPI, model, 'event');\n\n // Object methods\n vtkOpenGLHardwareSelector(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLHardwareSelector'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default Object.assign({ newInstance, extend }, Constants);\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/HardwareSelector/index.js","import { mat4 } from 'gl-matrix';\nimport Constants from 'vtk.js/Sources/Rendering/Core/ImageMapper/Constants';\nimport macro from 'vtk.js/Sources/macro';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\nimport {\n Wrap,\n Filter,\n} from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\n\nimport vtkPolyDataVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nconst { vtkErrorMacro } = macro;\n\nconst { SlicingMode } = Constants;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLImageMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLImageMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLImageMapper');\n\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n model.openGLImageSlice = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLImageSlice'\n );\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n model.context = model.openGLRenderWindow.getContext();\n model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.openGLTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n const ren = model.openGLRenderer.getRenderable();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n ren.getActiveCamera()\n );\n // is zslice set by the camera\n if (model.renderable.getSliceAtFocalPoint()) {\n model.renderable.setZSliceFromCamera(ren.getActiveCamera());\n }\n }\n };\n\n publicAPI.translucentPass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n publicAPI.opaquePass = (prepass) => {\n if (prepass) {\n publicAPI.render();\n }\n };\n\n // Renders myself\n publicAPI.render = () => {\n const actor = model.openGLImageSlice.getRenderable();\n const ren = model.openGLRenderer.getRenderable();\n publicAPI.renderPiece(ren, actor);\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n publicAPI.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkPolyDataVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 MCDCMatrix;',\n ]).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::PositionVC::Impl',\n [' gl_Position = MCDCMatrix * vertexMC;']\n ).result;\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Impl',\n 'tcoordVCVSOutput = tcoordMC;'\n ).result;\n\n const tNumComp = model.openGLTexture.getComponents();\n\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::TCoord::Dec',\n 'attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;'\n ).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Dec', [\n 'varying vec2 tcoordVCVSOutput;',\n 'uniform float shift;',\n 'uniform float scale;',\n 'uniform sampler2D texture1;',\n 'uniform sampler2D colorTexture1;',\n ]).result;\n switch (tNumComp) {\n case 1:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'float intensity = texture2D(texture1, tcoordVCVSOutput).r*scale + shift;',\n 'gl_FragData[0] = texture2D(colorTexture1, vec2(intensity, 0.5));',\n ]\n ).result;\n break;\n case 2:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);',\n 'float intensity = tcolor.r*scale + shift;',\n 'gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(intensity, 0.5)), scale*tcolor.g + shift);',\n ]\n ).result;\n break;\n default:\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::TCoord::Impl',\n [\n 'vec4 tcolor = scale*texture2D(texture1, tcoordVCVSOutput.st) + shift;',\n 'gl_FragData[0] = vec4(texture2D(colorTexture1, vec2(tcolor.r,0.5)).r,',\n ' texture2D(colorTexture1, vec2(tcolor.g,0.5)).r,',\n ' texture2D(colorTexture1, vec2(tcolor.b,0.5)).r, tcolor.a);',\n ]\n ).result;\n }\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n // has something changed that would require us to recreate the shader?\n // candidates are\n // property modified (representation interpolation and lighting)\n // input modified\n // light complexity changed\n if (\n cellBO.getProgram() === 0 ||\n cellBO.getShaderSourceTime().getMTime() < publicAPI.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < actor.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.currentInput.getMTime()\n ) {\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (cellBO.getProgram().isAttributeUsed('vertexMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'vertexMC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexMC in shader VAO.');\n }\n }\n if (\n cellBO.getProgram().isAttributeUsed('tcoordMC') &&\n cellBO.getCABO().getTCoordOffset()\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'tcoordMC',\n cellBO.getCABO().getTCoordOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n cellBO.getCABO().getTCoordComponents(),\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting tcoordMC in shader VAO.');\n }\n }\n cellBO.getAttributeUpdateTime().modified();\n }\n\n const texUnit = model.openGLTexture.getTextureUnit();\n cellBO.getProgram().setUniformi('texture1', texUnit);\n\n let cw = actor.getProperty().getColorWindow();\n let cl = actor.getProperty().getColorLevel();\n const cfun = actor.getProperty().getRGBTransferFunction();\n if (cfun) {\n const cRange = cfun.getRange();\n cw = cRange[1] - cRange[0];\n cl = 0.5 * (cRange[1] + cRange[0]);\n }\n const oglShiftScale = model.openGLTexture.getShiftAndScale();\n\n const scale = oglShiftScale.scale / cw;\n const shift = (oglShiftScale.shift - cl) / cw + 0.5;\n\n cellBO.getProgram().setUniformf('shift', shift);\n cellBO.getProgram().setUniformf('scale', scale);\n\n const texColorUnit = model.colorTexture.getTextureUnit();\n cellBO.getProgram().setUniformi('colorTexture1', texColorUnit);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const image = model.currentInput;\n const i2wmat4 = image.getIndexToWorld();\n\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n mat4.multiply(model.imagemat, keyMats.wcdc, i2wmat4);\n program.setUniformMatrix('MCDCMatrix', model.imagemat);\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const ppty = actor.getProperty();\n\n const opacity = ppty.getOpacity();\n program.setUniformf('opacityUniform', opacity);\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const gl = model.context;\n\n // activate the texture\n model.openGLTexture.activate();\n model.colorTexture.activate();\n\n // draw polygons\n if (model.tris.getCABO().getElementCount()) {\n // First we do the triangles, update the shader, set uniforms, etc.\n publicAPI.updateShaders(model.tris, ren, actor);\n gl.drawArrays(gl.TRIANGLES, 0, model.tris.getCABO().getElementCount());\n model.tris.getVAO().release();\n }\n\n model.openGLTexture.deactivate();\n model.colorTexture.deactivate();\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {};\n\n publicAPI.renderPiece = (ren, actor) => {\n // Make sure that we have been properly initialized.\n // if (ren.getRenderWindow().checkAbortStatus()) {\n // return;\n // }\n\n publicAPI.invokeEvent({ type: 'StartEvent' });\n model.renderable.update();\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent({ type: 'EndEvent' });\n\n if (model.currentInput === null) {\n vtkErrorMacro('No input!');\n return;\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.bounds);\n return;\n }\n model.bounds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n if (\n model.VBOBuildTime.getMTime() < publicAPI.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getMTime() ||\n model.VBOBuildTime.getMTime() < model.renderable.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getProperty().getMTime() ||\n model.VBOBuildTime.getMTime() < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const image = model.currentInput;\n\n if (image === null) {\n return;\n }\n\n const cWidth = 1024;\n const cTable = new Uint8Array(cWidth * 3);\n const cfun = actor.getProperty().getRGBTransferFunction();\n if (cfun) {\n const cfunToString = `${cfun.getMTime()}`;\n if (model.colorTextureString !== cfunToString) {\n const cRange = cfun.getRange();\n const cfTable = new Float32Array(cWidth * 3);\n cfun.getTable(cRange[0], cRange[1], cWidth, cfTable, 1);\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * cfTable[i];\n }\n model.colorTextureString = cfunToString;\n model.colorTexture.setMinificationFilter(Filter.LINEAR);\n model.colorTexture.setMagnificationFilter(Filter.LINEAR);\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n }\n } else {\n const cfunToString = '0';\n if (model.colorTextureString !== cfunToString) {\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * i / ((cWidth - 1) * 3);\n cTable[i + 1] = 255.0 * i / ((cWidth - 1) * 3);\n cTable[i + 2] = 255.0 * i / ((cWidth - 1) * 3);\n }\n model.colorTextureString = cfunToString;\n model.colorTexture.setMinificationFilter(Filter.LINEAR);\n model.colorTexture.setMagnificationFilter(Filter.LINEAR);\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n }\n }\n\n // rebuild the VBO if the data has changed\n let nSlice = model.renderable.getZSlice();\n const ext = image.getExtent();\n let sliceOffset = nSlice - ext[4];\n if (model.renderable.getCurrentSlicingMode() === SlicingMode.X) {\n nSlice = model.renderable.getXSlice();\n sliceOffset = nSlice - ext[0];\n }\n if (model.renderable.getCurrentSlicingMode() === SlicingMode.Y) {\n nSlice = model.renderable.getYSlice();\n sliceOffset = nSlice - ext[2];\n }\n const toString = `${nSlice}A${image.getMTime()}A${image\n .getPointData()\n .getScalars()\n .getMTime()}B${publicAPI.getMTime()}`;\n if (model.VBOBuildString !== toString) {\n // Build the VBOs\n const dims = image.getDimensions();\n if (\n image\n .getPointData()\n .getScalars()\n .getNumberOfComponents() === 4\n ) {\n model.openGLTexture.setGenerateMipmap(true);\n model.openGLTexture.setMinificationFilter(Filter.LINEAR_MIPMAP_LINEAR);\n } else {\n model.openGLTexture.setMinificationFilter(Filter.LINEAR);\n }\n model.openGLTexture.setMagnificationFilter(Filter.LINEAR);\n model.openGLTexture.setWrapS(Wrap.CLAMP_TO_EDGE);\n model.openGLTexture.setWrapT(Wrap.CLAMP_TO_EDGE);\n const numComp = image\n .getPointData()\n .getScalars()\n .getNumberOfComponents();\n const sliceSize = dims[0] * dims[1] * numComp;\n\n const ptsArray = new Float32Array(12);\n const tcoordArray = new Float32Array(8);\n for (let i = 0; i < 4; i++) {\n tcoordArray[i * 2] = i % 2 ? 1.0 : 0.0;\n tcoordArray[i * 2 + 1] = i > 1 ? 1.0 : 0.0;\n }\n\n const basicScalars = image\n .getPointData()\n .getScalars()\n .getData();\n let scalars = null;\n // Get right scalars according to slicing mode\n if (model.renderable.getCurrentSlicingMode() === SlicingMode.X) {\n scalars = [];\n for (let k = 0; k < dims[2]; k++) {\n for (let j = 0; j < dims[1]; j++) {\n scalars.push(\n basicScalars[sliceOffset + j * dims[0] + k * dims[0] * dims[1]]\n );\n }\n }\n dims[0] = dims[1];\n dims[1] = dims[2];\n ptsArray[0] = nSlice;\n ptsArray[1] = ext[2];\n ptsArray[2] = ext[4];\n ptsArray[3] = nSlice;\n ptsArray[4] = ext[3];\n ptsArray[5] = ext[4];\n ptsArray[6] = nSlice;\n ptsArray[7] = ext[2];\n ptsArray[8] = ext[5];\n ptsArray[9] = nSlice;\n ptsArray[10] = ext[3];\n ptsArray[11] = ext[5];\n } else if (model.renderable.getCurrentSlicingMode() === SlicingMode.Y) {\n scalars = [];\n for (let k = 0; k < dims[2]; k++) {\n for (let i = 0; i < dims[0]; i++) {\n scalars.push(\n basicScalars[i + sliceOffset * dims[0] + k * dims[0] * dims[1]]\n );\n }\n }\n dims[1] = dims[2];\n ptsArray[0] = ext[0];\n ptsArray[1] = nSlice;\n ptsArray[2] = ext[4];\n ptsArray[3] = ext[1];\n ptsArray[4] = nSlice;\n ptsArray[5] = ext[4];\n ptsArray[6] = ext[0];\n ptsArray[7] = nSlice;\n ptsArray[8] = ext[5];\n ptsArray[9] = ext[1];\n ptsArray[10] = nSlice;\n ptsArray[11] = ext[5];\n } else {\n scalars = basicScalars.subarray(\n sliceOffset * sliceSize,\n (sliceOffset + 1) * sliceSize\n );\n ptsArray[0] = ext[0];\n ptsArray[1] = ext[2];\n ptsArray[2] = nSlice;\n ptsArray[3] = ext[1];\n ptsArray[4] = ext[2];\n ptsArray[5] = nSlice;\n ptsArray[6] = ext[0];\n ptsArray[7] = ext[3];\n ptsArray[8] = nSlice;\n ptsArray[9] = ext[1];\n ptsArray[10] = ext[3];\n ptsArray[11] = nSlice;\n }\n\n model.openGLTexture.create2DFromRaw(\n dims[0],\n dims[1],\n numComp,\n image\n .getPointData()\n .getScalars()\n .getDataType(),\n scalars\n );\n model.openGLTexture.activate();\n model.openGLTexture.sendParameters();\n model.openGLTexture.deactivate();\n\n const points = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: ptsArray,\n });\n points.setName('points');\n const tcoords = vtkDataArray.newInstance({\n numberOfComponents: 2,\n values: tcoordArray,\n });\n tcoords.setName('tcoords');\n\n const cellArray = new Uint16Array(8);\n cellArray[0] = 3;\n cellArray[1] = 0;\n cellArray[2] = 1;\n cellArray[3] = 3;\n cellArray[4] = 3;\n cellArray[5] = 0;\n cellArray[6] = 3;\n cellArray[7] = 2;\n const cells = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: cellArray,\n });\n\n model.tris.getCABO().createVBO(cells, 'polys', Representation.SURFACE, {\n points,\n tcoords,\n cellOffset: 0,\n });\n model.VBOBuildTime.modified();\n model.VBOBuildString = toString;\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n VBOBuildTime: 0,\n VBOBuildString: null,\n openGLTexture: null,\n tris: null,\n imagemat: null,\n colorTexture: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.tris = vtkHelper.newInstance();\n model.openGLTexture = vtkOpenGLTexture.newInstance();\n model.colorTexture = vtkOpenGLTexture.newInstance();\n\n model.imagemat = mat4.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, []);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime);\n\n // Object methods\n vtkOpenGLImageMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLImageMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ImageMapper/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLImageSlice methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLImageSlice(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLImageSlice');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.traverseOpaqueZBufferPass = (renderPass) => {\n publicAPI.traverseOpaquePass(renderPass);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseOpaquePass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n !model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n child.traverse(renderPass);\n });\n publicAPI.apply(renderPass, false);\n };\n\n // we draw textures, then mapper, then post pass textures\n publicAPI.traverseTranslucentPass = (renderPass) => {\n if (\n !model.renderable ||\n !model.renderable.getVisibility() ||\n model.renderable.getIsOpaque()\n ) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n model.children.forEach((child) => {\n child.traverse(renderPass);\n });\n publicAPI.apply(renderPass, false);\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (model.renderable.getIsOpaque()) {\n renderPass.incrementOpaqueActorCount();\n } else {\n renderPass.incrementTranslucentActorCount();\n }\n }\n };\n\n publicAPI.opaqueZBufferPass = (prepass, renderPass) =>\n publicAPI.opaquePass(prepass, renderPass);\n\n // Renders myself\n publicAPI.opaquePass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(true);\n }\n };\n\n // Renders myself\n publicAPI.translucentPass = (prepass, renderPass) => {\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n } else {\n model.context.depthMask(true);\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n model.renderable.computeMatrix();\n mat4.copy(model.MCWCMatrix, model.renderable.getMatrix());\n mat4.transpose(model.MCWCMatrix, model.MCWCMatrix);\n\n if (model.renderable.getIsIdentity()) {\n mat3.identity(model.normalMatrix);\n } else {\n mat3.fromMat4(model.normalMatrix, model.MCWCMatrix);\n mat3.invert(model.normalMatrix, model.normalMatrix);\n }\n model.keyMatrixTime.modified();\n }\n\n return { mcwc: model.MCWCMatrix, normalMatrix: model.normalMatrix };\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n keyMatrixTime: null,\n normalMatrix: null,\n MCWCMatrix: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime);\n model.normalMatrix = mat3.create();\n model.MCWCMatrix = mat4.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLImageSlice(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLImageSlice');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ImageSlice/index.js","// import { mat4, vec3 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLPixelSpaceCallbackMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model) {\n model.classHierarchy.push('vtkOpenGLPixelSpaceCallbackMapper');\n\n publicAPI.opaquePass = (prepass, renderPass) => {\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n model.openGLRenderWindow = model.openGLRenderer.getParent();\n const aspectRatio = model.openGLRenderer.getAspectRatio();\n const camera = model.openGLRenderer\n ? model.openGLRenderer.getRenderable().getActiveCamera()\n : null;\n const tsize = model.openGLRenderer.getTiledSizeAndOrigin();\n let texels = null;\n\n if (model.renderable.getUseZValues()) {\n const zbt = renderPass.getZBufferTexture();\n const width = Math.floor(zbt.getWidth());\n const height = Math.floor(zbt.getHeight());\n\n const gl = model.openGLRenderWindow.getContext();\n zbt.bind();\n\n // Here we need to use vtkFramebuffer to save current settings (bindings/buffers)\n const fb = renderPass.getFramebuffer();\n if (!fb) {\n vtkDebugMacro('No framebuffer to save/restore');\n } else {\n // save framebuffer settings\n fb.saveCurrentBindingsAndBuffers();\n }\n\n const framebuffer = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n zbt.getHandle(),\n 0\n );\n\n if (\n gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE\n ) {\n texels = new Uint8Array(width * height * 4);\n gl.viewport(0, 0, width, height);\n gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, texels);\n }\n\n // Now we need to restore framebuffer bindings/buffers\n if (fb) {\n fb.restorePreviousBindingsAndBuffers();\n }\n\n gl.deleteFramebuffer(framebuffer);\n }\n\n model.renderable.invokeCallback(\n model.renderable.getInputData(),\n camera,\n aspectRatio,\n tsize,\n texels\n );\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (model.renderable.getUseZValues()) {\n renderPass.setDepthRequested(true);\n } else {\n renderPass.setDepthRequested(true);\n }\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLPixelSpaceCallbackMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLPixelSpaceCallbackMapper'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nconst { vtkDebugMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLRenderer methods\n// ----------------------------------------------------------------------------\n/* eslint-disable no-bitwise */\n\nfunction vtkOpenGLRenderer(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLRenderer');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (prepass) {\n if (!model.renderable) {\n return;\n }\n\n // make sure we have a camera\n if (!model.renderable.isActiveCameraCreated()) {\n model.renderable.resetCamera();\n }\n publicAPI.updateLights();\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getActiveCamera());\n publicAPI.addMissingNodes(model.renderable.getViewPropsWithNestedProps());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.updateLights = () => {\n let count = 0;\n\n const lights = model.renderable.getLightsByReference();\n for (let index = 0; index < lights.length; ++index) {\n if (lights[index].getSwitch() > 0.0) {\n count++;\n }\n }\n\n if (!count) {\n vtkDebugMacro('No lights are on, creating one.');\n model.renderable.createLight();\n }\n\n return count;\n };\n\n publicAPI.opaqueZBufferPass = (prepass) => {\n if (prepass) {\n let clearMask = 0;\n const gl = model.context;\n if (!model.renderable.getTransparent()) {\n model.context.clearColor(1.0, 0.0, 0.0, 1.0);\n clearMask |= gl.COLOR_BUFFER_BIT;\n }\n\n if (!model.renderable.getPreserveDepthBuffer()) {\n gl.clearDepth(1.0);\n clearMask |= gl.DEPTH_BUFFER_BIT;\n gl.depthMask(true);\n }\n\n gl.colorMask(true, true, true, true);\n gl.clear(clearMask);\n\n gl.enable(gl.DEPTH_TEST);\n }\n };\n\n // Renders myself\n publicAPI.cameraPass = (prepass) => {\n if (prepass) {\n publicAPI.clear();\n }\n };\n\n publicAPI.getAspectRatio = () => {\n const size = model.parent.getSizeByReference();\n const viewport = model.renderable.getViewportByReference();\n return (\n size[0] *\n (viewport[2] - viewport[0]) /\n ((viewport[3] - viewport[1]) * size[1])\n );\n };\n\n publicAPI.getTiledSizeAndOrigin = () => {\n const vport = model.renderable.getViewportByReference();\n\n // if there is no window assume 0 1\n const tileViewPort = [0.0, 0.0, 1.0, 1.0];\n\n // find the lower left corner of the viewport, taking into account the\n // lower left boundary of this tile\n const vpu = vtkMath.clampValue(vport[0] - tileViewPort[0], 0.0, 1.0);\n const vpv = vtkMath.clampValue(vport[1] - tileViewPort[1], 0.0, 1.0);\n\n // store the result as a pixel value\n const ndvp = model.parent.normalizedDisplayToDisplay(vpu, vpv);\n const lowerLeftU = Math.round(ndvp[0]);\n const lowerLeftV = Math.round(ndvp[1]);\n\n // find the upper right corner of the viewport, taking into account the\n // lower left boundary of this tile\n let vpu2 = vtkMath.clampValue(vport[2] - tileViewPort[0], 0.0, 1.0);\n let vpv2 = vtkMath.clampValue(vport[3] - tileViewPort[1], 0.0, 1.0);\n // also watch for the upper right boundary of the tile\n if (vpu2 > tileViewPort[2] - tileViewPort[0]) {\n vpu2 = tileViewPort[2] - tileViewPort[0];\n }\n if (vpv2 > tileViewPort[3] - tileViewPort[1]) {\n vpv2 = tileViewPort[3] - tileViewPort[1];\n }\n const ndvp2 = model.parent.normalizedDisplayToDisplay(vpu2, vpv2);\n\n // now compute the size of the intersection of the viewport with the\n // current tile\n let usize = Math.round(ndvp2[0]) - lowerLeftU;\n let vsize = Math.round(ndvp2[1]) - lowerLeftV;\n\n if (usize < 0) {\n usize = 0;\n }\n if (vsize < 0) {\n vsize = 0;\n }\n\n return { usize, vsize, lowerLeftU, lowerLeftV };\n };\n\n publicAPI.clear = () => {\n let clearMask = 0;\n const gl = model.context;\n\n if (!model.renderable.getTransparent()) {\n const background = model.renderable.getBackgroundByReference();\n // renderable ensures that background has 4 entries.\n model.context.clearColor(\n background[0],\n background[1],\n background[2],\n background[3]\n );\n clearMask |= gl.COLOR_BUFFER_BIT;\n }\n\n if (!model.renderable.getPreserveDepthBuffer()) {\n gl.clearDepth(1.0);\n clearMask |= gl.DEPTH_BUFFER_BIT;\n gl.depthMask(true);\n }\n\n gl.colorMask(true, true, true, true);\n\n const ts = publicAPI.getTiledSizeAndOrigin();\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(ts.lowerLeftU, ts.lowerLeftV, ts.usize, ts.vsize);\n\n gl.clear(clearMask);\n\n gl.enable(gl.DEPTH_TEST);\n /* eslint-enable no-bitwise */\n };\n\n publicAPI.releaseGraphicsResources = () => {\n if (model.selector !== null) {\n model.selector.releaseGraphicsResources();\n }\n };\n\n publicAPI.setOpenGLRenderWindow = (rw) => {\n if (model.openGLRenderWindow === rw) {\n return;\n }\n publicAPI.releaseGraphicsResources();\n model.openGLRenderWindow = rw;\n model.context = null;\n if (rw) {\n model.context = model.openGLRenderWindow.getContext();\n }\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n openGLRenderWindow: null,\n selector: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Build VTK API\n macro.get(publicAPI, model, ['shaderCache']);\n\n macro.setGet(publicAPI, model, ['selector']);\n\n // Object methods\n vtkOpenGLRenderer(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLRenderer');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Renderer/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\n// export const SHADER_TYPES = ['Vertex', 'Fragment', 'Geometry', 'Unknown'];\n\n// ----------------------------------------------------------------------------\n// vtkShader methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShader(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShader');\n\n publicAPI.compile = () => {\n let stype = model.context.VERTEX_SHADER;\n\n if (\n !model.source ||\n !model.source.length ||\n model.shaderType === 'Unknown'\n ) {\n return false;\n }\n\n // Ensure we delete the previous shader if necessary.\n if (model.handle !== 0) {\n model.context.deleteShader(model.handle);\n model.handle = 0;\n }\n\n switch (model.shaderType) {\n // case vtkShader::Geometry:\n // type = GL_GEOMETRY_SHADER;\n // break;\n case 'Fragment':\n stype = model.context.FRAGMENT_SHADER;\n break;\n case 'Vertex':\n default:\n stype = model.context.VERTEX_SHADER;\n break;\n }\n\n model.handle = model.context.createShader(stype);\n model.context.shaderSource(model.handle, model.source);\n model.context.compileShader(model.handle);\n const isCompiled = model.context.getShaderParameter(\n model.handle,\n model.context.COMPILE_STATUS\n );\n if (!isCompiled) {\n const lastError = model.context.getShaderInfoLog(model.handle);\n vtkErrorMacro(`Error compiling shader '${model.source}': ${lastError}`);\n model.context.deleteShader(model.handle);\n model.handle = 0;\n return false;\n }\n\n // The shader compiled, store its handle and return success.\n return true;\n };\n\n publicAPI.cleanup = () => {\n if (model.shaderType === 'Unknown' || model.handle === 0) {\n return;\n }\n\n model.context.deleteShader(model.handle);\n model.handle = 0;\n model.dirty = true;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n shaderType: 'Unknown',\n source: '',\n error: '',\n handle: 0,\n dirty: false,\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, [\n 'shaderType',\n 'source',\n 'error',\n 'handle',\n 'context',\n ]);\n\n // Object methods\n vtkShader(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkShader');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Shader/index.js","import md5 from 'blueimp-md5';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\n\n// ----------------------------------------------------------------------------\n\nconst SET_GET_FIELDS = ['lastShaderBound', 'context'];\n\n// ----------------------------------------------------------------------------\n// vtkShaderCache methods\n// ----------------------------------------------------------------------------\n\nfunction vtkShaderCache(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkShaderCache');\n\n publicAPI.replaceShaderValues = (VSSource, FSSource, GSSource) => {\n // first handle renaming any Fragment shader inputs\n // if we have a geometry shader. By deafult fragment shaders\n // assume their inputs come from a Vertex Shader. When we\n // have a Geometry shader we rename the frament shader inputs\n // to come from the geometry shader\n\n model.context.getExtension('OES_standard_derivatives');\n let nFSSource = FSSource;\n if (GSSource.length > 0) {\n nFSSource = vtkShaderProgram.substitute(nFSSource, 'VSOut', 'GSOut')\n .result;\n }\n\n let fragDepthString = '\\n';\n if (model.context.getExtension('EXT_frag_depth')) {\n fragDepthString = '#extension GL_EXT_frag_depth : enable\\n';\n }\n\n const gl2 =\n model.context.getParameter(model.context.VERSION).indexOf('WebGL 2.0') !==\n -1;\n\n let version = '#version 100\\n';\n if (gl2) {\n version =\n '#version 300 es\\n' +\n '#define attribute in\\n' +\n '#define textureCube texture\\n' +\n '#define texture2D texture\\n';\n }\n\n nFSSource = vtkShaderProgram.substitute(nFSSource, '//VTK::System::Dec', [\n `${version}\\n`,\n gl2 ? '' : '#extension GL_OES_standard_derivatives : enable\\n',\n fragDepthString,\n '#ifdef GL_FRAGMENT_PRECISION_HIGH',\n 'precision highp float;',\n 'precision highp int;',\n '#else',\n 'precision mediump float;',\n 'precision mediump int;',\n '#endif',\n ]).result;\n\n let nVSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::System::Dec',\n [\n `${version}\\n`,\n '#ifdef GL_FRAGMENT_PRECISION_HIGH',\n 'precision highp float;',\n 'precision highp int;',\n '#else',\n 'precision mediump float;',\n 'precision mediump int;',\n '#endif',\n ]\n ).result;\n\n if (gl2) {\n nVSSource = vtkShaderProgram.substitute(nVSSource, 'varying', 'out')\n .result;\n nFSSource = vtkShaderProgram.substitute(nFSSource, 'varying', 'in')\n .result;\n nFSSource = vtkShaderProgram.substitute(\n nFSSource,\n 'gl_FragData\\\\[0\\\\]',\n 'fragOutput0'\n ).result;\n nFSSource = vtkShaderProgram.substitute(\n nFSSource,\n '//VTK::Output::Dec',\n 'layout(location = 0) out vec4 fragOutput0;'\n ).result;\n }\n\n // nFSSource = ShaderProgram.substitute(nFSSource, 'gl_FragData\\\\[0\\\\]',\n // 'gl_FragColor').result;\n\n const nGSSource = vtkShaderProgram.substitute(\n GSSource,\n '//VTK::System::Dec',\n version\n ).result;\n\n return { VSSource: nVSSource, FSSource: nFSSource, GSSource: nGSSource };\n };\n\n // return NULL if there is an issue\n publicAPI.readyShaderProgramArray = (\n vertexCode,\n fragmentCode,\n geometryCode\n ) => {\n const data = publicAPI.replaceShaderValues(\n vertexCode,\n fragmentCode,\n geometryCode\n );\n\n const shader = publicAPI.getShaderProgram(\n data.VSSource,\n data.FSSource,\n data.GSSource\n );\n\n return publicAPI.readyShaderProgram(shader);\n };\n\n publicAPI.readyShaderProgram = (shader) => {\n if (!shader) {\n return null;\n }\n\n // compile if needed\n if (!shader.getCompiled() && !shader.compileShader()) {\n return null;\n }\n\n // bind if needed\n if (!publicAPI.bindShader(shader)) {\n return null;\n }\n\n return shader;\n };\n\n publicAPI.getShaderProgram = (vertexCode, fragmentCode, geometryCode) => {\n // compute the MD5 and the check the map\n const hashInput = `${vertexCode}${fragmentCode}${geometryCode}`;\n const result = md5(hashInput);\n\n // does it already exist?\n const loc = Object.keys(model.shaderPrograms).indexOf(result);\n\n if (loc === -1) {\n // create one\n const sps = vtkShaderProgram.newInstance();\n sps.setContext(model.context);\n sps.getVertexShader().setSource(vertexCode);\n sps.getFragmentShader().setSource(fragmentCode);\n if (geometryCode) {\n sps.getGeometryShader().setSource(geometryCode);\n }\n sps.setMd5Hash(result);\n model.shaderPrograms[result] = sps;\n return sps;\n }\n\n return model.shaderPrograms[result];\n };\n\n publicAPI.releaseGraphicsResources = (win) => {\n // NOTE:\n // In the current implementation as of October 26th, if a shader\n // program is created by ShaderCache then it should make sure\n // that it releases the graphics resouces used by these programs.\n // It is not wisely for callers to do that since then they would\n // have to loop over all the programs were in use and invoke\n // release graphics resources individually.\n\n publicAPI.releaseCurrentShader();\n\n Object.keys(model.shaderPrograms)\n .map((key) => model.shaderPrograms[key])\n .forEach((sp) => sp.releaseGraphicsResources(win));\n };\n\n publicAPI.releaseGraphicsResources = () => {\n // release prior shader\n if (model.astShaderBound) {\n model.lastShaderBound.release();\n model.lastShaderBound = null;\n }\n };\n\n publicAPI.bindShader = (shader) => {\n if (model.lastShaderBound === shader) {\n return 1;\n }\n\n // release prior shader\n if (model.lastShaderBound) {\n model.lastShaderBound.release();\n }\n shader.bind();\n model.lastShaderBound = shader;\n return 1;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n lastShaderBound: null,\n shaderPrograms: null,\n context: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Internal objects\n model.shaderPrograms = {};\n\n // Build VTK API\n macro.obj(publicAPI, model);\n macro.setGet(publicAPI, model, SET_GET_FIELDS);\n\n // Object methods\n vtkShaderCache(publicAPI, model);\n\n return Object.freeze(publicAPI);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkShaderCache');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ShaderCache/index.js","import { mat4 } from 'gl-matrix';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nimport macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\n\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\n\nimport vtkSphereMapperVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLSphereMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLSphereMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLSphereMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkSphereMapperVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 VCDCMatrix;\\n',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::PositionVC::Dec', [\n 'varying vec4 vertexVCVSOutput;',\n ]).result;\n\n // we create vertexVC below, so turn off the default\n // implementation\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ['vec4 vertexVC = vertexVCVSOutput;\\n']\n ).result;\n\n // for lights kit and positional the VCDC matrix is already defined\n // so don't redefine it\n const replacement = [\n 'uniform float invertedDepth;\\n',\n 'uniform int cameraParallel;\\n',\n 'varying float radiusVCVSOutput;\\n',\n 'varying vec3 centerVCVSOutput;\\n',\n 'uniform mat4 VCDCMatrix;\\n',\n ];\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n replacement\n ).result;\n\n let fragString = '';\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = 'gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Depth::Impl', [\n // compute the eye position and unit direction\n ' vec3 EyePos;\\n',\n ' vec3 EyeDir;\\n',\n ' if (cameraParallel != 0) {\\n',\n ' EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput);\\n',\n ' EyeDir = vec3(0.0,0.0,-1.0); }\\n',\n ' else {\\n',\n ' EyeDir = vertexVC.xyz;\\n',\n ' EyePos = vec3(0.0,0.0,0.0);\\n',\n ' float lengthED = length(EyeDir);\\n',\n ' EyeDir = normalize(EyeDir);\\n',\n // we adjust the EyePos to be closer if it is too far away\n // to prevent floating point precision noise\n ' if (lengthED > radiusVCVSOutput*3.0) {\\n',\n ' EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; }\\n',\n ' }\\n',\n\n // translate to Sphere center\n ' EyePos = EyePos - centerVCVSOutput;\\n',\n // scale to radius 1.0\n ' EyePos = EyePos/radiusVCVSOutput;\\n',\n // find the intersection\n ' float b = 2.0*dot(EyePos,EyeDir);\\n',\n ' float c = dot(EyePos,EyePos) - 1.0;\\n',\n ' float d = b*b - 4.0*c;\\n',\n ' vec3 normalVCVSOutput = vec3(0.0,0.0,1.0);\\n',\n ' if (d < 0.0) { discard; }\\n',\n ' else {\\n',\n ' float t = (-b - invertedDepth*sqrt(d))*0.5;\\n',\n\n // compute the normal, for unit sphere this is just\n // the intersection point\n ' normalVCVSOutput = invertedDepth*normalize(EyePos + t*EyeDir);\\n',\n // compute the intersection point in VC\n ' vertexVC.xyz = normalVCVSOutput*radiusVCVSOutput + centerVCVSOutput;\\n',\n ' }\\n',\n // compute the pixel's depth\n // ' normalVCVSOutput = vec3(0,0,1);\\n'\n ' vec4 pos = VCDCMatrix * vertexVC;\\n',\n fragString,\n ]).result;\n\n // Strip out the normal line -- the normal is computed as part of the depth\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Impl', '')\n .result;\n\n if (model.renderDepth) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'float computedZ = (pos.z / pos.w + 1.0) / 2.0;',\n 'float iz = floor(computedZ * 65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0);',\n ]).result;\n shaders.Fragment = FSSource;\n }\n\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n\n superClass.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime()) &&\n cellBO.getProgram().isAttributeUsed('offsetMC')\n ) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'offsetMC',\n 12, // 12:this->VBO->ColorOffset+sizeof(float)\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 2,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'offsetMC' in shader VAO.\");\n }\n }\n\n if (cellBO.getProgram().isUniformUsed('invertedDepth')) {\n cellBO\n .getProgram()\n .setUniformf('invertedDepth', model.invert ? -1.0 : 1.0);\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const cam = ren.getActiveCamera();\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n if (program.isUniformUsed('VCDCMatrix')) {\n program.setUniformMatrix('VCDCMatrix', keyMats.vcdc);\n }\n\n if (program.isUniformUsed('MCVCMatrix')) {\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n const tmp4 = mat4.create();\n mat4.multiply(tmp4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', tmp4);\n } else {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n }\n\n if (program.isUniformUsed('cameraParallel')) {\n cellBO\n .getProgram()\n .setUniformi('cameraParallel', cam.getParallelProjection());\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => model.context.TRIANGLES;\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n const vbo = model.primitives[model.primTypes.Tris].getCABO();\n\n const pointData = poly.getPointData();\n const points = poly.getPoints();\n const numPoints = points.getNumberOfPoints();\n const pointArray = points.getData();\n\n const pointSize = 5; // x,y,z,orientation1,orientation2\n let scales = null;\n\n if (\n model.renderable.getScaleArray() != null &&\n pointData.hasArray(model.renderable.getScaleArray())\n ) {\n scales = pointData.getArray(model.renderable.getScaleArray()).getData();\n }\n\n let colorData = null;\n let colorComponents = 0;\n let packedUCVBO = null;\n if (c) {\n colorComponents = c.getNumberOfComponents();\n vbo.setColorOffset(0);\n vbo.setColorBOStride(4);\n colorData = c.getData();\n packedUCVBO = new Uint8Array(3 * numPoints * 4);\n if (!vbo.getColorBO()) {\n vbo.setColorBO(vtkBufferObject.newInstance());\n }\n vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);\n } else if (vbo.getColorBO()) {\n vbo.setColorBO(null);\n }\n vbo.setColorComponents(colorComponents);\n\n const packedVBO = new Float32Array(pointSize * numPoints * 3);\n\n vbo.setStride(pointSize * 4);\n\n const cos30 = Math.cos(vtkMath.radiansFromDegrees(30.0));\n let pointIdx = 0;\n let colorIdx = 0;\n\n //\n // Generate points and point data for sides\n //\n let vboIdx = 0;\n let ucIdx = 0;\n for (let i = 0; i < numPoints; ++i) {\n let radius = model.renderable.getRadius();\n if (scales) {\n radius = scales[i];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = -2.0 * radius * cos30;\n packedVBO[vboIdx++] = -radius;\n if (colorData) {\n colorIdx = i * colorComponents;\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = 2.0 * radius * cos30;\n packedVBO[vboIdx++] = -radius;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = 0.0;\n packedVBO[vboIdx++] = 2.0 * radius;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n }\n\n vbo.setElementCount(vboIdx / pointSize);\n vbo.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n if (c) {\n vbo.getColorBO().upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n }\n\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLSphereMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLSphereMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/SphereMapper/index.js","import { mat3, mat4 } from 'gl-matrix';\nimport { ObjectType } from 'vtk.js/Sources/Rendering/OpenGL/BufferObject/Constants';\n\nimport * as macro from 'vtk.js/Sources/macro';\n\nimport vtkBufferObject from 'vtk.js/Sources/Rendering/OpenGL/BufferObject';\nimport vtkStickMapperVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl';\nimport vtkPolyDataFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkPolyDataFS.glsl';\n\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLStickMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLStickMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLStickMapper');\n\n // Capture 'parentClass' api for internal use\n const superClass = Object.assign({}, publicAPI);\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkStickMapperVS;\n shaders.Fragment = vtkPolyDataFS;\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let VSSource = shaders.Vertex;\n let FSSource = shaders.Fragment;\n\n VSSource = vtkShaderProgram.substitute(VSSource, '//VTK::Camera::Dec', [\n 'uniform mat4 VCDCMatrix;\\n',\n 'uniform mat4 MCVCMatrix;',\n ]).result;\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Dec',\n 'varying vec4 vertexVCVSOutput;'\n ).result;\n\n // we create vertexVC below, so turn off the default\n // implementation\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::PositionVC::Impl',\n ' vec4 vertexVC = vertexVCVSOutput;\\n'\n ).result;\n\n // for lights kit and positional the VCDC matrix is already defined\n // so don't redefine it\n const replacement = [\n 'uniform int cameraParallel;\\n',\n 'varying float radiusVCVSOutput;\\n',\n 'varying vec3 orientVCVSOutput;\\n',\n 'varying float lengthVCVSOutput;\\n',\n 'varying vec3 centerVCVSOutput;\\n',\n 'uniform mat4 VCDCMatrix;\\n',\n ];\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Dec',\n replacement\n ).result;\n\n let fragString = '';\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = ' gl_FragDepthEXT = (pos.z / pos.w + 1.0) / 2.0;\\n';\n }\n // see https://www.cl.cam.ac.uk/teaching/1999/AGraphHCI/SMAG/node2.html\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Depth::Impl', [\n // compute the eye position and unit direction\n ' vec3 EyePos;\\n',\n ' vec3 EyeDir;\\n',\n ' if (cameraParallel != 0) {\\n',\n ' EyePos = vec3(vertexVC.x, vertexVC.y, vertexVC.z + 3.0*radiusVCVSOutput);\\n',\n ' EyeDir = vec3(0.0,0.0,-1.0); }\\n',\n ' else {\\n',\n ' EyeDir = vertexVC.xyz;\\n',\n ' EyePos = vec3(0.0,0.0,0.0);\\n',\n ' float lengthED = length(EyeDir);\\n',\n ' EyeDir = normalize(EyeDir);\\n',\n // we adjust the EyePos to be closer if it is too far away\n // to prevent floating point precision noise\n ' if (lengthED > radiusVCVSOutput*3.0) {\\n',\n ' EyePos = vertexVC.xyz - EyeDir*3.0*radiusVCVSOutput; }\\n',\n ' }\\n',\n\n // translate to Stick center\n ' EyePos = EyePos - centerVCVSOutput;\\n',\n\n // rotate to new basis\n // base1, base2, orientVC\n ' vec3 base1;\\n',\n ' if (abs(orientVCVSOutput.z) < 0.99) {\\n',\n ' base1 = normalize(cross(orientVCVSOutput,vec3(0.0,0.0,1.0))); }\\n',\n ' else {\\n',\n ' base1 = normalize(cross(orientVCVSOutput,vec3(0.0,1.0,0.0))); }\\n',\n ' vec3 base2 = cross(orientVCVSOutput,base1);\\n',\n ' EyePos = vec3(dot(EyePos,base1),dot(EyePos,base2),dot(EyePos,orientVCVSOutput));\\n',\n ' EyeDir = vec3(dot(EyeDir,base1),dot(EyeDir,base2),dot(EyeDir,orientVCVSOutput));\\n',\n\n // scale by radius\n ' EyePos = EyePos/radiusVCVSOutput;\\n',\n\n // find the intersection\n ' float a = EyeDir.x*EyeDir.x + EyeDir.y*EyeDir.y;\\n',\n ' float b = 2.0*(EyePos.x*EyeDir.x + EyePos.y*EyeDir.y);\\n',\n ' float c = EyePos.x*EyePos.x + EyePos.y*EyePos.y - 1.0;\\n',\n ' float d = b*b - 4.0*a*c;\\n',\n ' vec3 normalVCVSOutput = vec3(0.0,0.0,1.0);\\n',\n ' if (d < 0.0) { discard; }\\n',\n ' else {\\n',\n ' float t = (-b - sqrt(d))/(2.0*a);\\n',\n ' float tz = EyePos.z + t*EyeDir.z;\\n',\n ' vec3 iPoint = EyePos + t*EyeDir;\\n',\n ' if (abs(iPoint.z)*radiusVCVSOutput > lengthVCVSOutput*0.5) {\\n',\n // test for end cap\n ' float t2 = (-b + sqrt(d))/(2.0*a);\\n',\n ' float tz2 = EyePos.z + t2*EyeDir.z;\\n',\n ' if (tz2*radiusVCVSOutput > lengthVCVSOutput*0.5 || tz*radiusVCVSOutput < -0.5*lengthVCVSOutput) { discard; }\\n',\n ' else {\\n',\n ' normalVCVSOutput = orientVCVSOutput;\\n',\n ' float t3 = (lengthVCVSOutput*0.5/radiusVCVSOutput - EyePos.z)/EyeDir.z;\\n',\n ' iPoint = EyePos + t3*EyeDir;\\n',\n ' vertexVC.xyz = radiusVCVSOutput*(iPoint.x*base1 + iPoint.y*base2 + iPoint.z*orientVCVSOutput) + centerVCVSOutput;\\n',\n ' }\\n',\n ' }\\n',\n ' else {\\n',\n // The normal is the iPoint.xy rotated back into VC\n ' normalVCVSOutput = iPoint.x*base1 + iPoint.y*base2;\\n',\n // rescale rerotate and translate\n ' vertexVC.xyz = radiusVCVSOutput*(normalVCVSOutput + iPoint.z*orientVCVSOutput) + centerVCVSOutput;\\n',\n ' }\\n',\n ' }\\n',\n\n // ' vec3 normalVC = vec3(0.0,0.0,1.0);\\n'\n // compute the pixel's depth\n ' vec4 pos = VCDCMatrix * vertexVC;\\n',\n fragString,\n ]).result;\n\n // Strip out the normal line -- the normal is computed as part of the depth\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Impl', '')\n .result;\n\n const selector = ren.getSelector();\n const picking = false; // (ren.getRenderWindow().getIsPicking() || selector != null);\n fragString = '';\n if (picking) {\n if (\n !selector /* ||\n (this->LastSelectionState >= vtkHardwareSelector::ID_LOW24) */\n ) {\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Dec',\n ['attribute vec4 selectionId;\\n', 'varying vec4 selectionIdVSOutput;']\n ).result;\n VSSource = vtkShaderProgram.substitute(\n VSSource,\n '//VTK::Picking::Impl',\n 'selectionIdVSOutput = selectionId;'\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'varying vec4 selectionIdVSOutput;'\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString =\n ' gl_FragData[0] = vec4(selectionIdVSOutput.rgb, 1.0);\\n';\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n fragString\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Dec',\n 'uniform vec3 mapperIndex;'\n ).result;\n\n if (model.context.getExtension('EXT_frag_depth')) {\n fragString = ' gl_FragData[0] = vec4(mapperIndex,1.0);\\n';\n }\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Picking::Impl',\n fragString\n ).result;\n }\n }\n\n if (model.renderDepth) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'float computedZ = (pos.z / pos.w + 1.0) / 2.0;',\n 'float iz = floor(computedZ * 65535.0 + 0.1);',\n 'float rf = floor(iz/256.0)/255.0;',\n 'float gf = mod(iz,256.0)/255.0;',\n 'gl_FragData[0] = vec4(rf, gf, 0.0, 1.0);',\n ]).result;\n shaders.Fragment = FSSource;\n }\n\n shaders.Vertex = VSSource;\n shaders.Fragment = FSSource;\n\n superClass.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime > cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n const selector = ren.getSelector();\n const picking = false; // (ren.getRenderWindow().getIsPicking() || selector !== null);\n\n if (cellBO.getProgram().isAttributeUsed('orientMC')) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'orientMC',\n 12, // after X Y Z\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'orientMC' in shader VAO.\");\n }\n }\n if (cellBO.getProgram().isAttributeUsed('offsetMC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO().getColorBO(),\n 'offsetMC',\n 0,\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_BYTE,\n 3,\n true\n )\n ) {\n vtkErrorMacro(\"Error setting 'offsetMC' in shader VAO.\");\n }\n }\n if (cellBO.getProgram().isAttributeUsed('radiusMC')) {\n if (\n !cellBO.getVAO().addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'radiusMC',\n 24, // X Y Z OX OY OZ\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 1,\n false\n )\n ) {\n vtkErrorMacro(\"Error setting 'radiusMC' in shader VAO.\");\n }\n }\n if (\n picking &&\n !selector /* ||\n (model.LastSelectionState >= vtkHardwareSelector::ID_LOW24) */ &&\n cellBO.getProgram().isAttributeUsed('selectionId')\n ) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n cellBO.getProgram(),\n cellBO.getCABO(),\n 'selectionId',\n cellBO.getCABO().getColorOffset(),\n cellBO.getCABO().getColorBOStride(),\n model.context.UNSIGNED_CHAR,\n 4,\n true\n )\n ) {\n vtkErrorMacro(\"Error setting 'selectionId' in shader VAO.\");\n }\n } else {\n cellBO.getVAO().removeAttributeArray('selectionId');\n }\n }\n\n superClass.setMapperShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n const cam = ren.getActiveCamera();\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n if (program.isUniformUsed('VCDCMatrix')) {\n program.setUniformMatrix('VCDCMatrix', keyMats.vcdc);\n }\n\n if (!actor.getIsIdentity()) {\n const actMats = model.openGLActor.getKeyMatrices();\n const tmp4 = mat4.create();\n\n if (program.isUniformUsed('MCVCMatrix')) {\n mat4.multiply(tmp4, keyMats.wcvc, actMats.mcwc);\n program.setUniformMatrix('MCVCMatrix', tmp4);\n }\n if (program.isUniformUsed('normalMatrix')) {\n const anorms = mat3.create();\n mat3.multiply(anorms, keyMats.normalMatrix, actMats.normalMatrix);\n program.setUniformMatrix3x3('normalMatrix', anorms);\n }\n } else {\n if (program.isUniformUsed('MCVCMatrix')) {\n program.setUniformMatrix('MCVCMatrix', keyMats.wcvc);\n }\n if (program.isUniformUsed('normalMatrix')) {\n program.setUniformMatrix3x3('normalMatrix', keyMats.normalMatrix);\n }\n }\n\n if (program.isUniformUsed('cameraParallel')) {\n cellBO\n .getProgram()\n .setUniformi('cameraParallel', cam.getParallelProjection());\n }\n };\n\n publicAPI.getOpenGLMode = (rep, type) => model.context.TRIANGLES;\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const poly = model.currentInput;\n\n if (poly === null) {\n return;\n }\n\n model.renderable.mapScalars(poly, 1.0);\n const c = model.renderable.getColorMapColors();\n\n const vbo = model.primitives[model.primTypes.Tris].getCABO();\n\n const pointData = poly.getPointData();\n const points = poly.getPoints();\n const numPoints = points.getNumberOfPoints();\n const pointArray = points.getData();\n let pointSize = 3; // x,y,z\n\n // three more floats for orientation + 1 for radius\n pointSize += 4;\n\n let colorData = null;\n let colorComponents = 0;\n vbo.setColorBOStride(4);\n\n if (!vbo.getColorBO()) {\n vbo.setColorBO(vtkBufferObject.newInstance());\n }\n vbo.getColorBO().setOpenGLRenderWindow(model.openGLRenderWindow);\n if (c) {\n colorComponents = c.getNumberOfComponents();\n vbo.setColorOffset(4);\n colorData = c.getData();\n vbo.setColorBOStride(8);\n }\n vbo.setColorComponents(colorComponents);\n\n vbo.setStride(pointSize * 4);\n\n // Create a buffer, and copy the data over.\n const packedVBO = new Float32Array(pointSize * numPoints * 12);\n const packedUCVBO = new Uint8Array(12 * numPoints * (colorData ? 8 : 4));\n\n let scales = null;\n let orientationArray = null;\n //\n // Generate points and point data for sides\n //\n if (\n model.renderable.getScaleArray() != null &&\n pointData.hasArray(model.renderable.getScaleArray())\n ) {\n scales = pointData.getArray(model.renderable.getScaleArray()).getData();\n }\n\n if (\n model.renderable.getOrientationArray() != null &&\n pointData.hasArray(model.renderable.getOrientationArray())\n ) {\n orientationArray = pointData\n .getArray(model.renderable.getOrientationArray())\n .getData();\n } else {\n vtkErrorMacro([\n 'Error setting orientationArray.\\n',\n 'You have to specify the stick orientation',\n ]);\n }\n\n // Vertices\n // 013 - 032 - 324 - 453\n //\n // _.4---_.5\n // .-* .-*\n // 2-----3\n // | /|\n // | / |\n // | / |\n // | / |\n // |/ |\n // 0-----1\n //\n // coord for each points\n // 0: 000\n // 1: 100\n // 2: 001\n // 3: 101\n // 4: 011\n // 5: 111\n\n // prettier-ignore\n const verticesArray = [\n 0, 1, 3,\n 0, 3, 2,\n 2, 3, 5,\n 2, 5, 4,\n ];\n\n let pointIdx = 0;\n let colorIdx = 0;\n let vboIdx = 0;\n let ucIdx = 0;\n\n for (let i = 0; i < numPoints; ++i) {\n let length = model.renderable.getLength();\n let radius = model.renderable.getRadius();\n if (scales) {\n length = scales[i * 2];\n radius = scales[i * 2 + 1];\n }\n\n for (let j = 0; j < verticesArray.length; ++j) {\n pointIdx = i * 3;\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n packedVBO[vboIdx++] = pointArray[pointIdx++];\n pointIdx = i * 3;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = orientationArray[pointIdx++] * length;\n packedVBO[vboIdx++] = radius;\n\n packedUCVBO[ucIdx++] = 255 * (verticesArray[j] % 2);\n packedUCVBO[ucIdx++] = verticesArray[j] >= 4 ? 255 : 0;\n packedUCVBO[ucIdx++] = verticesArray[j] >= 2 ? 255 : 0;\n packedUCVBO[ucIdx++] = 255;\n\n colorIdx = i * colorComponents;\n if (colorData) {\n packedUCVBO[ucIdx++] = colorData[colorIdx];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 1];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 2];\n packedUCVBO[ucIdx++] = colorData[colorIdx + 3];\n }\n }\n }\n vbo.setElementCount(vboIdx / pointSize);\n vbo.upload(packedVBO, ObjectType.ARRAY_BUFFER);\n vbo.getColorBO().upload(packedUCVBO, ObjectType.ARRAY_BUFFER);\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkOpenGLPolyDataMapper.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLStickMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLStickMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/StickMapper/index.js","import macro from 'vtk.js/Sources/macro';\n\nconst { vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLTextureUnitManager methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLTextureUnitManager(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLTextureUnitManager');\n\n // ----------------------------------------------------------------------------\n // Description:\n // Delete the allocation table and check if it is not called before\n // all the texture units have been released.\n publicAPI.deleteTable = () => {\n for (let i = 0; i < model.numberOfTextureUnits; ++i) {\n if (model.textureUnits[i] === true) {\n vtkErrorMacro('some texture units were not properly released');\n }\n }\n model.textureUnits = [];\n model.numberOfTextureUnits = 0;\n };\n\n // ----------------------------------------------------------------------------\n publicAPI.setContext = (ctx) => {\n if (model.context !== ctx) {\n if (model.context !== 0) {\n publicAPI.deleteTable();\n }\n model.context = ctx;\n if (model.context) {\n model.numberOfTextureUnits = ctx.getParameter(\n ctx.MAX_TEXTURE_IMAGE_UNITS\n );\n for (let i = 0; i < model.numberOfTextureUnits; ++i) {\n model.textureUnits[i] = false;\n }\n }\n publicAPI.modified();\n }\n };\n\n // ----------------------------------------------------------------------------\n // Description:\n // Reserve a texture unit. It returns its number.\n // It returns -1 if the allocation failed (because there are no more\n // texture units left).\n // \\post valid_result: result==-1 || result>=0 && resultGetNumberOfTextureUnits())\n // \\post allocated: result==-1 || this->IsAllocated(result)\n publicAPI.allocate = () => {\n for (let i = 0; i < model.numberOfTextureUnits; i++) {\n if (!publicAPI.isAllocated(i)) {\n model.textureUnits[i] = true;\n return i;\n }\n }\n return -1;\n };\n\n publicAPI.allocateUnit = (unit) => {\n if (publicAPI.isAllocated(unit)) {\n return -1;\n }\n\n model.textureUnits[unit] = true;\n return unit;\n };\n\n // ----------------------------------------------------------------------------\n // Description:\n // Tell if texture unit `textureUnitId' is already allocated.\n // \\pre valid_id_range : textureUnitId>=0 && textureUnitIdGetNumberOfTextureUnits()\n publicAPI.isAllocated = (textureUnitId) => model.textureUnits[textureUnitId];\n\n // ----------------------------------------------------------------------------\n // Description:\n // Release a texture unit.\n // \\pre valid_id: textureUnitId>=0 && textureUnitIdGetNumberOfTextureUnits()\n // \\pre allocated_id: this->IsAllocated(textureUnitId)\n publicAPI.free = (val) => {\n model.textureUnits[val] = false;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n numberOfTextureUnits: 0,\n textureUnits: 0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n macro.obj(publicAPI, model);\n\n model.textureUnits = [];\n\n // Build VTK API\n macro.get(publicAPI, model, ['numberOfTextureUnits']);\n\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLTextureUnitManager(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLTextureUnitManager'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/TextureUnitManager/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkGenericWidgetRepresentation from 'vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation';\nimport vtkViewNodeFactory from 'vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory';\nimport vtkOpenGLActor from 'vtk.js/Sources/Rendering/OpenGL/Actor';\nimport vtkOpenGLActor2D from 'vtk.js/Sources/Rendering/OpenGL/Actor2D';\nimport vtkOpenGLCamera from 'vtk.js/Sources/Rendering/OpenGL/Camera';\nimport vtkOpenGLGlyph3DMapper from 'vtk.js/Sources/Rendering/OpenGL/Glyph3DMapper';\nimport vtkOpenGLImageMapper from 'vtk.js/Sources/Rendering/OpenGL/ImageMapper';\nimport vtkOpenGLImageSlice from 'vtk.js/Sources/Rendering/OpenGL/ImageSlice';\nimport vtkOpenGLPixelSpaceCallbackMapper from 'vtk.js/Sources/Rendering/OpenGL/PixelSpaceCallbackMapper';\nimport vtkOpenGLPolyDataMapper from 'vtk.js/Sources/Rendering/OpenGL/PolyDataMapper';\nimport vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';\nimport vtkOpenGLRenderer from 'vtk.js/Sources/Rendering/OpenGL/Renderer';\nimport vtkOpenGLSphereMapper from 'vtk.js/Sources/Rendering/OpenGL/SphereMapper';\nimport vtkOpenGLStickMapper from 'vtk.js/Sources/Rendering/OpenGL/StickMapper';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkOpenGLVolume from 'vtk.js/Sources/Rendering/OpenGL/Volume';\nimport vtkOpenGLVolumeMapper from 'vtk.js/Sources/Rendering/OpenGL/VolumeMapper';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLViewNodeFactory(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLViewNodeFactory');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNodeFactory.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkOpenGLViewNodeFactory(publicAPI, model);\n\n // Initialization\n publicAPI.registerOverride('vtkActor', vtkOpenGLActor.newInstance);\n publicAPI.registerOverride('vtkActor2D', vtkOpenGLActor2D.newInstance);\n publicAPI.registerOverride('vtkCamera', vtkOpenGLCamera.newInstance);\n publicAPI.registerOverride(\n 'vtkGlyph3DMapper',\n vtkOpenGLGlyph3DMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkImageMapper',\n vtkOpenGLImageMapper.newInstance\n );\n publicAPI.registerOverride('vtkImageSlice', vtkOpenGLImageSlice.newInstance);\n publicAPI.registerOverride('vtkMapper', vtkOpenGLPolyDataMapper.newInstance);\n publicAPI.registerOverride(\n 'vtkPixelSpaceCallbackMapper',\n vtkOpenGLPixelSpaceCallbackMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkRenderWindow',\n vtkOpenGLRenderWindow.newInstance\n );\n publicAPI.registerOverride('vtkRenderer', vtkOpenGLRenderer.newInstance);\n publicAPI.registerOverride(\n 'vtkSphereMapper',\n vtkOpenGLSphereMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkStickMapper',\n vtkOpenGLStickMapper.newInstance\n );\n publicAPI.registerOverride('vtkTexture', vtkOpenGLTexture.newInstance);\n publicAPI.registerOverride('vtkVolume', vtkOpenGLVolume.newInstance);\n publicAPI.registerOverride(\n 'vtkVolumeMapper',\n vtkOpenGLVolumeMapper.newInstance\n );\n publicAPI.registerOverride(\n 'vtkWidgetRepresentation',\n vtkGenericWidgetRepresentation.newInstance\n );\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(\n extend,\n 'vtkOpenGLViewNodeFactory'\n);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/ViewNodeFactory/index.js","import { mat3, mat4 } from 'gl-matrix';\n\nimport macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVolume methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVolume(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVolume');\n\n // Builds myself.\n publicAPI.buildPass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n publicAPI.prepareNodes();\n publicAPI.addMissingNode(model.renderable.getMapper());\n publicAPI.removeUnusedNodes();\n }\n };\n\n publicAPI.queryPass = (prepass, renderPass) => {\n if (prepass) {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n renderPass.incrementVolumeCount();\n }\n };\n\n publicAPI.traverseVolumePass = (renderPass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n\n publicAPI.apply(renderPass, true);\n\n model.children[0].traverse(renderPass);\n\n publicAPI.apply(renderPass, false);\n };\n\n // Renders myself\n publicAPI.volumePass = (prepass) => {\n if (!model.renderable || !model.renderable.getVisibility()) {\n return;\n }\n if (prepass) {\n model.context = publicAPI\n .getFirstAncestorOfType('vtkOpenGLRenderWindow')\n .getContext();\n model.context.depthMask(false);\n } else {\n model.context.depthMask(true);\n }\n };\n\n publicAPI.getKeyMatrices = () => {\n // has the actor changed?\n if (model.renderable.getMTime() > model.keyMatrixTime.getMTime()) {\n model.renderable.computeMatrix();\n mat4.copy(model.MCWCMatrix, model.renderable.getMatrix());\n mat4.transpose(model.MCWCMatrix, model.MCWCMatrix);\n\n if (model.renderable.getIsIdentity()) {\n mat3.identity(model.normalMatrix);\n } else {\n mat3.fromMat4(model.normalMatrix, model.MCWCMatrix);\n mat3.invert(model.normalMatrix, model.normalMatrix);\n }\n model.keyMatrixTime.modified();\n }\n\n return { mcwc: model.MCWCMatrix, normalMatrix: model.normalMatrix };\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // context: null,\n // keyMatrixTime: null,\n // normalMatrix: null,\n // MCWCMatrix: null,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.keyMatrixTime = {};\n macro.obj(model.keyMatrixTime);\n model.normalMatrix = mat3.create();\n model.MCWCMatrix = mat4.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLVolume(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLVolume');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/Volume/index.js","import macro from 'vtk.js/Sources/macro';\nimport { vec3, mat3, mat4 } from 'gl-matrix';\n// import vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';\nimport vtkDataArray from 'vtk.js/Sources/Common/Core/DataArray';\nimport { VtkDataTypes } from 'vtk.js/Sources/Common/Core/DataArray/Constants';\nimport vtkHelper from 'vtk.js/Sources/Rendering/OpenGL/Helper';\nimport vtkMath from 'vtk.js/Sources/Common/Core/Math';\nimport vtkOpenGLFramebuffer from 'vtk.js/Sources/Rendering/OpenGL/Framebuffer';\nimport vtkOpenGLTexture from 'vtk.js/Sources/Rendering/OpenGL/Texture';\nimport vtkShaderProgram from 'vtk.js/Sources/Rendering/OpenGL/ShaderProgram';\nimport vtkVertexArrayObject from 'vtk.js/Sources/Rendering/OpenGL/VertexArrayObject';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\nimport { Representation } from 'vtk.js/Sources/Rendering/Core/Property/Constants';\nimport {\n Wrap,\n Filter,\n} from 'vtk.js/Sources/Rendering/OpenGL/Texture/Constants';\nimport { InterpolationType } from 'vtk.js/Sources/Rendering/Core/VolumeProperty/Constants';\n\nimport vtkVolumeVS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl';\nimport vtkVolumeFS from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl';\nimport vtkVolumeFS2 from 'vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl';\n\nconst { vtkWarningMacro, vtkErrorMacro } = macro;\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLVolumeMapper methods\n// ----------------------------------------------------------------------------\n\nfunction vtkOpenGLVolumeMapper(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkOpenGLVolumeMapper');\n\n publicAPI.buildPass = () => {\n model.zBufferTexture = null;\n };\n\n // ohh someone is doing a zbuffer pass, use that for\n // intermixed volume rendering\n publicAPI.opaqueZBufferPass = (prepass, renderPass) => {\n if (prepass) {\n const zbt = renderPass.getZBufferTexture();\n if (zbt !== model.zBufferTexture) {\n model.zBufferTexture = zbt;\n }\n }\n };\n\n // Renders myself\n publicAPI.volumePass = (prepass, renderPass) => {\n if (prepass) {\n model.openGLRenderWindow = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderWindow'\n );\n model.context = model.openGLRenderWindow.getContext();\n model.tris.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.scalarTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.colorTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.opacityTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.lightingTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.jitterTexture.setOpenGLRenderWindow(model.openGLRenderWindow);\n model.framebuffer.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n model.openGLVolume = publicAPI.getFirstAncestorOfType('vtkOpenGLVolume');\n const actor = model.openGLVolume.getRenderable();\n model.openGLRenderer = publicAPI.getFirstAncestorOfType(\n 'vtkOpenGLRenderer'\n );\n const ren = model.openGLRenderer.getRenderable();\n model.openGLCamera = model.openGLRenderer.getViewNodeFor(\n ren.getActiveCamera()\n );\n publicAPI.renderPiece(ren, actor);\n }\n };\n\n publicAPI.buildShaders = (shaders, ren, actor) => {\n publicAPI.getShaderTemplate(shaders, ren, actor);\n publicAPI.replaceShaderValues(shaders, ren, actor);\n };\n\n publicAPI.getShaderTemplate = (shaders, ren, actor) => {\n shaders.Vertex = vtkVolumeVS;\n if (model.openGLRenderWindow.getWebgl2()) {\n shaders.Fragment = vtkVolumeFS2;\n } else {\n shaders.Fragment = vtkVolumeFS;\n }\n shaders.Geometry = '';\n };\n\n publicAPI.replaceShaderValues = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n const iType = actor.getProperty().getInterpolationType();\n const gopacity = actor.getProperty().getUseGradientOpacity(0);\n const volInfo = model.scalarTexture.getVolumeInfo();\n\n // WebGL2\n if (model.openGLRenderWindow.getWebgl2()) {\n // for lighting and gradient opacity we need the\n // normal texture\n if (gopacity || model.lastLightComplexity > 0) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'uniform highp sampler3D normalTexture;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n ['vec4 normal = texture(normalTexture, ijk);']\n ).result;\n }\n } else {\n // WebGL1\n // compute the tcoords\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ComputeTCoords',\n [\n 'vec2 tpos = getTextureCoord(ijk, 0.0);',\n 'vec2 tpos2 = getTextureCoord(ijk, 1.0);',\n 'float zmix = ijk.z - floor(ijk.z);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ComputeTCoords',\n ['vec2 tpos = getTextureCoord(ijk, 0.5);']\n ).result;\n }\n\n // compute the scalar value\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarFunction',\n [\n 'scalar = getScalarValue(tpos);',\n 'float scalar2 = getScalarValue(tpos2);',\n 'scalar = mix(scalar, scalar2, zmix);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarFunction',\n ['scalar = getScalarValue(tpos);']\n ).result;\n }\n\n // for lighting and gradient opacity we need the\n // normal texture\n if (gopacity || model.lastLightComplexity > 0) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::Normal::Dec', [\n 'uniform sampler2D normalTexture;',\n ]).result;\n if (iType === InterpolationType.LINEAR) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n [\n 'vec4 normal = texture2D(normalTexture, tpos);',\n 'vec4 normal2 = texture2D(normalTexture, tpos2);',\n 'normal = mix(normal, normal2, zmix);',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Normal::Impl',\n ['vec4 normal = texture2D(normalTexture,tpos);']\n ).result;\n }\n }\n\n // if we had to encode the scalar values into\n // rgb then add the right call to decode them\n // otherwise the generic texture lookup\n if (volInfo.encodedScalars) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarValueFunction::Impl',\n [\n 'vec4 scalarComps = texture2D(texture1, tpos);',\n 'return scalarComps.r + scalarComps.g/255.0 + scalarComps.b/65025.0;',\n ]\n ).result;\n } else {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::ScalarValueFunction::Impl',\n 'return texture2D(texture1, tpos).r;'\n ).result;\n }\n\n // WebGL only supports loops over constants\n // and does not support while loops so we\n // have to hard code how many steps/samples to take\n // We do a break so most systems will gracefully\n // early terminate, but it is always possible\n // a system will execute every step regardless\n\n const ext = model.currentInput.getExtent();\n const spc = model.currentInput.getSpacing();\n const vsize = vec3.create();\n vec3.set(\n vsize,\n (ext[1] - ext[0]) * spc[0],\n (ext[3] - ext[2]) * spc[1],\n (ext[5] - ext[4]) * spc[2]\n );\n const maxSamples =\n vec3.length(vsize) / model.renderable.getSampleDistance();\n\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::MaximumSamplesValue',\n `${Math.ceil(maxSamples)}`\n ).result;\n }\n\n // if using gradient opacity apply that\n if (gopacity) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::GradientOpacity::Dec',\n [\n 'uniform float goscale;',\n 'uniform float goshift;',\n 'uniform float gomin;',\n 'uniform float gomax;',\n ]\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::GradientOpacity::Impl',\n [\n 'tcolor.a = tcolor.a*clamp(normal.a*normal.a*goscale + goshift, gomin, gomax);',\n ]\n ).result;\n }\n\n // if we have a ztexture then declare it and use it\n if (model.zBufferTexture !== null) {\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Dec', [\n 'uniform sampler2D zBufferTexture;',\n 'uniform float vpWidth;',\n 'uniform float vpHeight;',\n ]).result;\n FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ZBuffer::Impl', [\n 'vec4 depthVec = texture2D(zBufferTexture, vec2(gl_FragCoord.x / vpWidth, gl_FragCoord.y/vpHeight));',\n 'float zdepth = (depthVec.r*256.0 + depthVec.g)/257.0;',\n 'zdepth = zdepth * 2.0 - 1.0;',\n 'zdepth = -2.0 * camFar * camNear / (zdepth*(camFar-camNear)-(camFar+camNear)) - camNear;',\n 'zdepth = -zdepth/rayDir.z;',\n 'tbounds.y = min(zdepth,tbounds.y);',\n ]).result;\n }\n\n shaders.Fragment = FSSource;\n\n publicAPI.replaceShaderLight(shaders, ren, actor);\n };\n\n publicAPI.replaceShaderLight = (shaders, ren, actor) => {\n let FSSource = shaders.Fragment;\n\n // check for shadow maps\n const shadowFactor = '';\n\n switch (model.lastLightComplexity) {\n default:\n case 0: // no lighting, tcolor is fine as is\n break;\n\n case 1: // headlight\n case 2: // light kit\n case 3: {\n // positional not implemented fallback to directional\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n [\n 'uniform float vSpecularPower;',\n 'uniform float vAmbient;',\n 'uniform float vDiffuse;',\n 'uniform float vSpecular;',\n '//VTK::Light::Dec',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n ' normal.rgb = 2.0*(normal.rgb - 0.5);',\n ' vec3 diffuse = vec3(0.0, 0.0, 0.0);',\n ' vec3 specular = vec3(0.0, 0.0, 0.0);',\n ' //VTK::Light::Impl',\n ' tcolor.rgb = tcolor.rgb*(diffuse*vDiffuse + vAmbient) + specular*vSpecular;',\n ],\n false\n ).result;\n let lightNum = 0;\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Dec',\n [\n // intensity weighted color\n `uniform vec3 lightColor${lightNum};`,\n `uniform vec3 lightDirectionWC${lightNum}; // normalized`,\n `uniform vec3 lightHalfAngleWC${lightNum}; // normalized`,\n '//VTK::Light::Dec',\n ],\n false\n ).result;\n FSSource = vtkShaderProgram.substitute(\n FSSource,\n '//VTK::Light::Impl',\n [\n // ` float df = max(0.0, dot(normal.rgb, -lightDirectionWC${lightNum}));`,\n ` float df = abs(dot(normal.rgb, -lightDirectionWC${lightNum}));`,\n ` diffuse += ((df${shadowFactor}) * lightColor${lightNum});`,\n // ' if (df > 0.0)',\n // ' {',\n // ` float sf = pow( max(0.0, dot(lightHalfAngleWC${lightNum},normal.rgb)), specularPower);`,\n ` float sf = pow( abs(dot(lightHalfAngleWC${lightNum},normal.rgb)), vSpecularPower);`,\n ` specular += ((sf${shadowFactor}) * lightColor${lightNum});`,\n // ' }',\n ' //VTK::Light::Impl',\n ],\n false\n ).result;\n lightNum++;\n }\n });\n }\n }\n\n shaders.Fragment = FSSource;\n };\n\n publicAPI.getNeedToRebuildShaders = (cellBO, ren, actor) => {\n // do we need lighting?\n let lightComplexity = 0;\n if (actor.getProperty().getShade()) {\n // consider the lighting complexity to determine which case applies\n // simple headlight, Light Kit, the whole feature set of VTK\n lightComplexity = 0;\n model.numberOfLights = 0;\n\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n model.numberOfLights++;\n if (lightComplexity === 0) {\n lightComplexity = 1;\n }\n }\n\n if (\n lightComplexity === 1 &&\n (model.numberOfLights > 1 ||\n light.getIntensity() !== 1.0 ||\n !light.lightTypeIsHeadLight())\n ) {\n lightComplexity = 2;\n }\n if (lightComplexity < 3 && light.getPositional()) {\n lightComplexity = 3;\n }\n });\n }\n\n let needRebuild = false;\n if (model.lastLightComplexity !== lightComplexity) {\n model.lastLightComplexity = lightComplexity;\n needRebuild = true;\n }\n\n // has something changed that would require us to recreate the shader?\n if (\n cellBO.getProgram() === 0 ||\n needRebuild ||\n model.lastZBufferTexture !== model.zBufferTexture ||\n cellBO.getShaderSourceTime().getMTime() < publicAPI.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < actor.getMTime() ||\n cellBO.getShaderSourceTime().getMTime() < model.currentInput.getMTime()\n ) {\n model.lastZBufferTexture = model.zBufferTexture;\n return true;\n }\n\n return false;\n };\n\n publicAPI.updateShaders = (cellBO, ren, actor) => {\n model.lastBoundBO = cellBO;\n\n // has something changed that would require us to recreate the shader?\n if (publicAPI.getNeedToRebuildShaders(cellBO, ren, actor)) {\n const shaders = { Vertex: null, Fragment: null, Geometry: null };\n\n publicAPI.buildShaders(shaders, ren, actor);\n\n // compile and bind the program if needed\n const newShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n shaders.Vertex,\n shaders.Fragment,\n shaders.Geometry\n );\n\n // if the shader changed reinitialize the VAO\n if (newShader !== cellBO.getProgram()) {\n cellBO.setProgram(newShader);\n // reset the VAO as the shader has changed\n cellBO.getVAO().releaseGraphicsResources();\n }\n\n cellBO.getShaderSourceTime().modified();\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(cellBO.getProgram());\n }\n\n cellBO.getVAO().bind();\n publicAPI.setMapperShaderParameters(cellBO, ren, actor);\n publicAPI.setCameraShaderParameters(cellBO, ren, actor);\n publicAPI.setPropertyShaderParameters(cellBO, ren, actor);\n };\n\n publicAPI.setMapperShaderParameters = (cellBO, ren, actor) => {\n // Now to update the VAO too, if necessary.\n const program = cellBO.getProgram();\n\n if (\n cellBO.getCABO().getElementCount() &&\n (model.VBOBuildTime.getMTime() >\n cellBO.getAttributeUpdateTime().getMTime() ||\n cellBO.getShaderSourceTime().getMTime() >\n cellBO.getAttributeUpdateTime().getMTime())\n ) {\n if (program.isAttributeUsed('vertexDC')) {\n if (\n !cellBO\n .getVAO()\n .addAttributeArray(\n program,\n cellBO.getCABO(),\n 'vertexDC',\n cellBO.getCABO().getVertexOffset(),\n cellBO.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexDC in shader VAO.');\n }\n }\n cellBO.getAttributeUpdateTime().modified();\n }\n\n program.setUniformi('texture1', model.scalarTexture.getTextureUnit());\n program.setUniformf('sampleDistance', model.renderable.getSampleDistance());\n\n // if we have a zbuffer texture then set it\n if (model.zBufferTexture !== null) {\n program.setUniformi(\n 'zBufferTexture',\n model.zBufferTexture.getTextureUnit()\n );\n const size = publicAPI.getRenderTargetSize();\n program.setUniformf('vpWidth', size[0]);\n program.setUniformf('vpHeight', size[1]);\n }\n };\n\n publicAPI.setCameraShaderParameters = (cellBO, ren, actor) => {\n // // [WMVD]C == {world, model, view, display} coordinates\n // // E.g., WCDC == world to display coordinate transformation\n const keyMats = model.openGLCamera.getKeyMatrices(ren);\n\n const program = cellBO.getProgram();\n\n const cam = model.openGLCamera.getRenderable();\n const crange = cam.getClippingRange();\n program.setUniformf('camThick', crange[1] - crange[0]);\n program.setUniformf('camNear', crange[0]);\n program.setUniformf('camFar', crange[1]);\n\n const bounds = model.currentInput.getBounds();\n const dims = model.currentInput.getDimensions();\n\n // compute the viewport bounds of the volume\n // we will only render those fragments.\n const pos = vec3.create();\n const dir = vec3.create();\n let dcxmin = 1.0;\n let dcxmax = -1.0;\n let dcymin = 1.0;\n let dcymax = -1.0;\n for (let i = 0; i < 8; ++i) {\n vec3.set(\n pos,\n bounds[i % 2],\n bounds[2 + Math.floor(i / 2) % 2],\n bounds[4 + Math.floor(i / 4)]\n );\n vec3.transformMat4(pos, pos, keyMats.wcvc);\n vec3.normalize(dir, pos);\n\n // now find the projection of this point onto a\n // nearZ distance plane. Since the camera is at 0,0,0\n // in VC the ray is just t*pos and\n // t is -nearZ/dir.z\n // intersection becomes pos.x/pos.z\n const t = -crange[0] / pos[2];\n vec3.scale(pos, dir, t);\n\n // now convert to DC\n vec3.transformMat4(pos, pos, keyMats.vcdc);\n\n dcxmin = Math.min(pos[0], dcxmin);\n dcxmax = Math.max(pos[0], dcxmax);\n dcymin = Math.min(pos[1], dcymin);\n dcymax = Math.max(pos[1], dcymax);\n }\n program.setUniformf('dcxmin', dcxmin);\n program.setUniformf('dcxmax', dcxmax);\n program.setUniformf('dcymin', dcymin);\n program.setUniformf('dcymax', dcymax);\n\n const ext = model.currentInput.getExtent();\n const spc = model.currentInput.getSpacing();\n const vsize = vec3.create();\n vec3.set(\n vsize,\n (ext[1] - ext[0]) * spc[0],\n (ext[3] - ext[2]) * spc[1],\n (ext[5] - ext[4]) * spc[2]\n );\n program.setUniform3f('vSize', vsize[0], vsize[1], vsize[2]);\n\n vec3.set(pos, ext[0], ext[2], ext[4]);\n model.currentInput.indexToWorldVec3(pos, pos);\n\n vec3.transformMat4(pos, pos, keyMats.wcvc);\n program.setUniform3f('vOriginVC', pos[0], pos[1], pos[2]);\n\n // apply the image directions\n const i2wmat4 = model.currentInput.getIndexToWorld();\n mat4.multiply(model.idxToView, keyMats.wcvc, i2wmat4);\n\n mat3.copy(model.idxNormalMatrix, model.currentInput.getDirection());\n mat3.multiply(\n model.idxNormalMatrix,\n keyMats.normalMatrix,\n model.idxNormalMatrix\n );\n\n const maxSamples =\n vec3.length(vsize) / model.renderable.getSampleDistance();\n if (maxSamples > model.renderable.getMaximumSamplesPerRay()) {\n vtkWarningMacro(`The number of steps required ${Math.ceil(\n maxSamples\n )} is larger than the\n specified maximum number of steps ${model.renderable.getMaximumSamplesPerRay()}.\n Please either change the\n volumeMapper sampleDistance or its maximum number of samples.`);\n }\n const vctoijk = vec3.create();\n if (model.openGLRenderWindow.getWebgl2()) {\n vec3.set(vctoijk, 1.0, 1.0, 1.0);\n } else {\n vec3.set(vctoijk, dims[0] - 1.0, dims[1] - 1.0, dims[2] - 1.0);\n }\n vec3.divide(vctoijk, vctoijk, vsize);\n program.setUniform3f('vVCToIJK', vctoijk[0], vctoijk[1], vctoijk[2]);\n\n if (!model.openGLRenderWindow.getWebgl2()) {\n const volInfo = model.scalarTexture.getVolumeInfo();\n program.setUniformf('texWidth', model.scalarTexture.getWidth());\n program.setUniformf('texHeight', model.scalarTexture.getHeight());\n program.setUniformi('xreps', volInfo.xreps);\n program.setUniformf('xstride', volInfo.xstride);\n program.setUniformf('ystride', volInfo.ystride);\n program.setUniformi('repWidth', volInfo.width);\n program.setUniformi('repHeight', volInfo.height);\n program.setUniformi('repDepth', dims[2]);\n }\n\n // map normals through normal matrix\n // then use a point on the plane to compute the distance\n const normal = vec3.create();\n const pos2 = vec3.create();\n for (let i = 0; i < 6; ++i) {\n switch (i) {\n default:\n case 0:\n vec3.set(normal, 1.0, 0.0, 0.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 1:\n vec3.set(normal, -1.0, 0.0, 0.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n case 2:\n vec3.set(normal, 0.0, 1.0, 0.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 3:\n vec3.set(normal, 0.0, -1.0, 0.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n case 4:\n vec3.set(normal, 0.0, 0.0, 1.0);\n vec3.set(pos2, ext[1], ext[3], ext[5]);\n break;\n case 5:\n vec3.set(normal, 0.0, 0.0, -1.0);\n vec3.set(pos2, ext[0], ext[2], ext[4]);\n break;\n }\n vec3.transformMat3(normal, normal, model.idxNormalMatrix);\n vec3.transformMat4(pos2, pos2, model.idxToView);\n const dist = -1.0 * vec3.dot(pos2, normal);\n\n // we have the plane in view coordinates\n // specify the planes in view coordinates\n program.setUniform3f(`vPlaneNormal${i}`, normal[0], normal[1], normal[2]);\n program.setUniformf(`vPlaneDistance${i}`, dist);\n }\n\n const dcvc = mat4.create();\n mat4.invert(dcvc, keyMats.vcdc);\n program.setUniformMatrix('DCVCMatrix', dcvc);\n\n // handle lighting values\n switch (model.lastLightComplexity) {\n default:\n case 0: // no lighting, tcolor is fine as is\n break;\n\n case 1: // headlight\n case 2: // light kit\n case 3: {\n // positional not implemented fallback to directional\n let lightNum = 0;\n const camDOP = cam.getDirectionOfProjection();\n const lightColor = [];\n ren.getLights().forEach((light) => {\n const status = light.getSwitch();\n if (status > 0) {\n const dColor = light.getColor();\n const intensity = light.getIntensity();\n lightColor[0] = dColor[0] * intensity;\n lightColor[1] = dColor[1] * intensity;\n lightColor[2] = dColor[2] * intensity;\n program.setUniform3fArray(`lightColor${lightNum}`, lightColor);\n const lightDir = light.getDirection();\n program.setUniform3fArray(`lightDirectionWC${lightNum}`, lightDir);\n const halfAngle = [\n -0.5 * (lightDir[0] + camDOP[0]),\n -0.5 * (lightDir[1] + camDOP[1]),\n -0.5 * (lightDir[2] + camDOP[2]),\n ];\n program.setUniform3fArray(`lightHalfAngleWC${lightNum}`, halfAngle);\n lightNum++;\n }\n });\n }\n }\n };\n\n publicAPI.setPropertyShaderParameters = (cellBO, ren, actor) => {\n const program = cellBO.getProgram();\n\n program.setUniformi('ctexture', model.colorTexture.getTextureUnit());\n program.setUniformi('otexture', model.opacityTexture.getTextureUnit());\n program.setUniformi('jtexture', model.jitterTexture.getTextureUnit());\n\n const volInfo = model.scalarTexture.getVolumeInfo();\n const sscale = volInfo.max - volInfo.min;\n\n const vprop = actor.getProperty();\n const ofun = vprop.getScalarOpacity(0);\n const oRange = ofun.getRange();\n program.setUniformf(\n 'oshift',\n (volInfo.min - oRange[0]) / (oRange[1] - oRange[0])\n );\n program.setUniformf('oscale', sscale / (oRange[1] - oRange[0]));\n\n const cfun = vprop.getRGBTransferFunction(0);\n const cRange = cfun.getRange();\n program.setUniformf(\n 'cshift',\n (volInfo.min - cRange[0]) / (cRange[1] - cRange[0])\n );\n program.setUniformf('cscale', sscale / (cRange[1] - cRange[0]));\n\n if (vprop.getUseGradientOpacity(0)) {\n const lightingInfo = model.lightingTexture.getVolumeInfo();\n const gomin = vprop.getGradientOpacityMinimumOpacity(0);\n const gomax = vprop.getGradientOpacityMaximumOpacity(0);\n program.setUniformf('gomin', gomin);\n program.setUniformf('gomax', gomax);\n const goRange = [\n vprop.getGradientOpacityMinimumValue(0),\n vprop.getGradientOpacityMaximumValue(0),\n ];\n program.setUniformf(\n 'goscale',\n lightingInfo.max * (gomax - gomin) / (goRange[1] - goRange[0])\n );\n program.setUniformf(\n 'goshift',\n -goRange[0] * (gomax - gomin) / (goRange[1] - goRange[0]) + gomin\n );\n }\n\n if (model.lastLightComplexity > 0 || vprop.getUseGradientOpacity(0)) {\n program.setUniformi(\n 'normalTexture',\n model.lightingTexture.getTextureUnit()\n );\n }\n\n if (model.lastLightComplexity > 0) {\n program.setUniformf('vAmbient', vprop.getAmbient());\n program.setUniformf('vDiffuse', vprop.getDiffuse());\n program.setUniformf('vSpecular', vprop.getSpecular());\n program.setUniformf('vSpecularPower', vprop.getSpecularPower());\n }\n };\n\n publicAPI.getRenderTargetSize = () => {\n if (model.lastXYF > 1.43) {\n const sz = model.framebuffer.getSize();\n return [model.fvp[0] * sz[0], model.fvp[1] * sz[1]];\n }\n return model.openGLRenderWindow.getSize();\n };\n\n publicAPI.renderPieceStart = (ren, actor) => {\n if (model.renderable.getAutoAdjustSampleDistances()) {\n const rwi = ren.getVTKWindow().getInteractor();\n const rft = rwi.getLastFrameTime();\n // console.log(`last frame time ${Math.floor(1.0 / rft)}`);\n\n // frame time is typically for a couple frames prior\n // which makes it messy, so keep long running averages\n // of frame times and pixels rendered\n model.avgFrameTime = 0.97 * model.avgFrameTime + 0.03 * rft;\n model.avgWindowArea =\n 0.97 * model.avgWindowArea + 0.03 / (model.lastXYF * model.lastXYF);\n\n if (\n ren\n .getVTKWindow()\n .getInteractor()\n .isAnimating()\n ) {\n // compute target xy factor\n let txyf = Math.sqrt(\n model.avgFrameTime * rwi.getDesiredUpdateRate() / model.avgWindowArea\n );\n\n // limit subsampling to a factor of 10\n if (txyf > 10.0) {\n txyf = 10.0;\n }\n\n model.targetXYF = txyf;\n } else {\n model.targetXYF = Math.sqrt(\n model.avgFrameTime * rwi.getStillUpdateRate() / model.avgWindowArea\n );\n }\n\n // have some inertia to change states around 1.43\n if (model.targetXYF < 1.53 && model.targetXYF > 1.33) {\n model.targetXYF = model.lastXYF;\n }\n\n // and add some inertia to change at all\n if (Math.abs(1.0 - model.targetXYF / model.lastXYF) < 0.1) {\n model.targetXYF = model.lastXYF;\n }\n model.lastXYF = model.targetXYF;\n } else {\n model.lastXYF = model.renderable.getImageSampleDistance();\n }\n\n // only use FBO beyond this value\n if (model.lastXYF <= 1.43) {\n model.lastXYF = 1.0;\n }\n\n // console.log(`last target ${model.lastXYF} ${model.targetXYF}`);\n // console.log(`awin aft ${model.avgWindowArea} ${model.avgFrameTime}`);\n const xyf = model.lastXYF;\n\n const size = model.openGLRenderWindow.getSize();\n // const newSize = [\n // Math.floor((size[0] / xyf) + 0.5),\n // Math.floor((size[1] / xyf) + 0.5)];\n\n // const diag = vtkBoundingBox.getDiagonalLength(model.currentInput.getBounds());\n\n // // so what is the resulting sample size roughly\n // console.log(`sam size ${diag / newSize[0]} ${diag / newSize[1]} ${model.renderable.getImageSampleDistance()}`);\n\n // // if the sample distance is getting far from the image sample dist\n // if (2.0 * diag / (newSize[0] + newSize[1]) > 4 * model.renderable.getSampleDistance()) {\n // model.renderable.setSampleDistance(4.0 * model.renderable.getSampleDistance());\n // }\n // if (2.0 * diag / (newSize[0] + newSize[1]) < 0.25 * model.renderable.getSampleDistance()) {\n // model.renderable.setSampleDistance(0.25 * model.renderable.getSampleDistance());\n // }\n\n // create/resize framebuffer if needed\n if (xyf > 1.43) {\n model.framebuffer.saveCurrentBindingsAndBuffers();\n\n if (model.framebuffer.getGLFramebuffer() === null) {\n model.framebuffer.create(\n Math.floor(size[0] * 0.7),\n Math.floor(size[1] * 0.7)\n );\n model.framebuffer.populateFramebuffer();\n } else {\n const fbSize = model.framebuffer.getSize();\n if (\n fbSize[0] !== Math.floor(size[0] * 0.7) ||\n fbSize[1] !== Math.floor(size[1] * 0.7)\n ) {\n console.log('resizing');\n model.framebuffer.create(\n Math.floor(size[0] * 0.7),\n Math.floor(size[1] * 0.7)\n );\n model.framebuffer.populateFramebuffer();\n }\n }\n model.framebuffer.bind();\n const gl = model.context;\n gl.clearColor(0.0, 0.0, 0.0, 0.0);\n gl.colorMask(true, true, true, true);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.viewport(0, 0, size[0] / xyf, size[1] / xyf);\n model.fvp = [\n Math.floor(size[0] / xyf) / Math.floor(size[0] * 0.7),\n Math.floor(size[1] / xyf) / Math.floor(size[1] * 0.7),\n ];\n }\n model.context.disable(model.context.DEPTH_TEST);\n\n // make sure the BOs are up to date\n publicAPI.updateBufferObjects(ren, actor);\n\n // set interpolation on the texture based on property setting\n const iType = actor.getProperty().getInterpolationType();\n if (iType === InterpolationType.NEAREST) {\n model.scalarTexture.setMinificationFilter(Filter.NEAREST);\n model.scalarTexture.setMagnificationFilter(Filter.NEAREST);\n model.lightingTexture.setMinificationFilter(Filter.NEAREST);\n model.lightingTexture.setMagnificationFilter(Filter.NEAREST);\n } else {\n model.scalarTexture.setMinificationFilter(Filter.LINEAR);\n model.scalarTexture.setMagnificationFilter(Filter.LINEAR);\n model.lightingTexture.setMinificationFilter(Filter.LINEAR);\n model.lightingTexture.setMagnificationFilter(Filter.LINEAR);\n }\n\n // Bind the OpenGL, this is shared between the different primitive/cell types.\n model.lastBoundBO = null;\n\n // if we have a zbuffer texture then activate it\n if (model.zBufferTexture !== null) {\n model.zBufferTexture.activate();\n }\n };\n\n publicAPI.renderPieceDraw = (ren, actor) => {\n const gl = model.context;\n\n // render the texture\n model.scalarTexture.activate();\n model.opacityTexture.activate();\n model.colorTexture.activate();\n model.jitterTexture.activate();\n if (\n actor.getProperty().getShade() ||\n actor.getProperty().getUseGradientOpacity(0)\n ) {\n model.lightingTexture.activate();\n }\n\n publicAPI.updateShaders(model.tris, ren, actor);\n\n // First we do the triangles, update the shader, set uniforms, etc.\n // for (let i = 0; i < 11; ++i) {\n // gl.drawArrays(gl.TRIANGLES, 66 * i, 66);\n // }\n gl.drawArrays(gl.TRIANGLES, 0, model.tris.getCABO().getElementCount());\n model.tris.getVAO().release();\n\n model.scalarTexture.deactivate();\n model.colorTexture.deactivate();\n model.opacityTexture.deactivate();\n model.jitterTexture.deactivate();\n if (\n actor.getProperty().getShade() ||\n actor.getProperty().getUseGradientOpacity(0)\n ) {\n model.lightingTexture.deactivate();\n }\n };\n\n publicAPI.renderPieceFinish = (ren, actor) => {\n // if we have a zbuffer texture then deactivate it\n if (model.zBufferTexture !== null) {\n model.zBufferTexture.deactivate();\n }\n\n if (model.lastXYF > 1.43) {\n // now copy the frambuffer with the volume into the\n // regular buffer\n model.framebuffer.restorePreviousBindingsAndBuffers();\n\n if (model.copyShader === null) {\n model.copyShader = model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgramArray(\n [\n '//VTK::System::Dec',\n 'attribute vec4 vertexDC;',\n 'uniform vec2 tfactor;',\n 'varying vec2 tcoord;',\n 'void main() { tcoord = vec2(vertexDC.x*0.5 + 0.5, vertexDC.y*0.5 + 0.5) * tfactor; gl_Position = vertexDC; }',\n ].join('\\n'),\n [\n '//VTK::System::Dec',\n '//VTK::Output::Dec',\n 'uniform sampler2D texture1;',\n 'varying vec2 tcoord;',\n 'void main() { gl_FragData[0] = texture2D(texture1,tcoord); }',\n ].join('\\n'),\n ''\n );\n const program = model.copyShader;\n\n model.copyVAO = vtkVertexArrayObject.newInstance();\n model.copyVAO.setOpenGLRenderWindow(model.openGLRenderWindow);\n\n model.tris.getCABO().bind();\n if (\n !model.copyVAO.addAttributeArray(\n program,\n model.tris.getCABO(),\n 'vertexDC',\n model.tris.getCABO().getVertexOffset(),\n model.tris.getCABO().getStride(),\n model.context.FLOAT,\n 3,\n model.context.FALSE\n )\n ) {\n vtkErrorMacro('Error setting vertexDC in copy shader VAO.');\n }\n } else {\n model.openGLRenderWindow\n .getShaderCache()\n .readyShaderProgram(model.copyShader);\n }\n\n const size = model.openGLRenderWindow.getSize();\n model.context.viewport(0, 0, size[0], size[1]);\n\n // activate texture\n const tex = model.framebuffer.getColorTexture();\n tex.activate();\n model.copyShader.setUniformi('texture', tex.getTextureUnit());\n\n model.copyShader.setUniform2f('tfactor', model.fvp[0], model.fvp[1]);\n\n const gl = model.context;\n gl.blendFuncSeparate(\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n\n // render quad\n model.context.drawArrays(\n model.context.TRIANGLES,\n 0,\n model.tris.getCABO().getElementCount()\n );\n tex.deactivate();\n\n gl.blendFuncSeparate(\n gl.SRC_ALPHA,\n gl.ONE_MINUS_SRC_ALPHA,\n gl.ONE,\n gl.ONE_MINUS_SRC_ALPHA\n );\n }\n };\n\n publicAPI.renderPiece = (ren, actor) => {\n publicAPI.invokeEvent({ type: 'StartEvent' });\n model.renderable.update();\n model.currentInput = model.renderable.getInputData();\n publicAPI.invokeEvent({ type: 'EndEvent' });\n\n if (model.currentInput === null) {\n vtkErrorMacro('No input!');\n return;\n }\n\n publicAPI.renderPieceStart(ren, actor);\n publicAPI.renderPieceDraw(ren, actor);\n publicAPI.renderPieceFinish(ren, actor);\n };\n\n publicAPI.computeBounds = (ren, actor) => {\n if (!publicAPI.getInput()) {\n vtkMath.uninitializeBounds(model.Bounds);\n return;\n }\n model.bounnds = publicAPI.getInput().getBounds();\n };\n\n publicAPI.updateBufferObjects = (ren, actor) => {\n // Rebuild buffers if needed\n if (publicAPI.getNeedToRebuildBufferObjects(ren, actor)) {\n publicAPI.buildBufferObjects(ren, actor);\n }\n };\n\n publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {\n // first do a coarse check\n if (\n model.VBOBuildTime.getMTime() < publicAPI.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getMTime() ||\n model.VBOBuildTime.getMTime() < model.renderable.getMTime() ||\n model.VBOBuildTime.getMTime() < actor.getProperty().getMTime() ||\n model.VBOBuildTime.getMTime() < model.currentInput.getMTime()\n ) {\n return true;\n }\n return false;\n };\n\n publicAPI.buildBufferObjects = (ren, actor) => {\n const image = model.currentInput;\n\n if (image === null) {\n return;\n }\n\n const vprop = actor.getProperty();\n\n if (!model.jitterTexture.getHandle()) {\n const oTable = new Uint8Array(32 * 32);\n for (let i = 0; i < 32 * 32; ++i) {\n oTable[i] = 255.0 * Math.random();\n }\n model.jitterTexture.setMinificationFilter(Filter.LINEAR);\n model.jitterTexture.setMagnificationFilter(Filter.LINEAR);\n model.jitterTexture.create2DFromRaw(\n 32,\n 32,\n 1,\n VtkDataTypes.UNSIGNED_CHAR,\n oTable\n );\n }\n\n // rebuild opacity tfun?\n const ofun = vprop.getScalarOpacity(0);\n const opacityFactor =\n model.renderable.getSampleDistance() /\n vprop.getScalarOpacityUnitDistance(0);\n let toString = `${ofun.getMTime()}A${opacityFactor}`;\n if (model.opacityTextureString !== toString) {\n const oRange = ofun.getRange();\n const oWidth = 1024;\n const ofTable = new Float32Array(oWidth);\n ofun.getTable(oRange[0], oRange[1], oWidth, ofTable, 1);\n const oTable = new Uint8Array(oWidth);\n for (let i = 0; i < oWidth; ++i) {\n oTable[i] = 255.0 * (1.0 - (1.0 - ofTable[i]) ** opacityFactor);\n }\n model.opacityTexture.setMinificationFilter(Filter.LINEAR);\n model.opacityTexture.setMagnificationFilter(Filter.LINEAR);\n model.opacityTexture.create2DFromRaw(\n oWidth,\n 1,\n 1,\n VtkDataTypes.UNSIGNED_CHAR,\n oTable\n );\n model.opacityTextureString = toString;\n }\n\n // rebuild color tfun?\n const cfun = vprop.getRGBTransferFunction(0);\n toString = `${cfun.getMTime()}`;\n if (model.colorTextureString !== toString) {\n const cRange = cfun.getRange();\n const cWidth = 1024;\n const cfTable = new Float32Array(cWidth * 3);\n cfun.getTable(cRange[0], cRange[1], cWidth, cfTable, 1);\n const cTable = new Uint8Array(cWidth * 3);\n for (let i = 0; i < cWidth * 3; ++i) {\n cTable[i] = 255.0 * cfTable[i];\n }\n model.colorTexture.setMinificationFilter(Filter.LINEAR);\n model.colorTexture.setMagnificationFilter(Filter.LINEAR);\n model.colorTexture.create2DFromRaw(\n cWidth,\n 1,\n 3,\n VtkDataTypes.UNSIGNED_CHAR,\n cTable\n );\n model.colorTextureString = toString;\n }\n\n // rebuild the scalarTexture if the data has changed\n toString = `${image.getMTime()}`;\n if (model.scalarTextureString !== toString) {\n // Build the textures\n const dims = image.getDimensions();\n model.scalarTexture.resetFormatAndType();\n model.scalarTexture.create3DOneComponentFromRaw(\n dims[0],\n dims[1],\n dims[2],\n image\n .getPointData()\n .getScalars()\n .getDataType(),\n image\n .getPointData()\n .getScalars()\n .getData()\n );\n model.scalarTextureString = toString;\n }\n\n // rebuild lighting texture\n const shading = vprop.getShade();\n const gopacity = vprop.getUseGradientOpacity(0);\n // rebuild the lightingTexture if the data has changed\n toString = `${image.getMTime()}`;\n if ((shading || gopacity) && model.lightingTextureString !== toString) {\n model.lightingTexture.resetFormatAndType();\n model.lightingTexture.create3DLighting(\n model.scalarTexture,\n image\n .getPointData()\n .getScalars()\n .getData(),\n image.getSpacing()\n );\n model.lightingTextureString = toString;\n }\n\n if (!model.tris.getCABO().getElementCount()) {\n // build the CABO\n const ptsArray = new Float32Array(12);\n for (let i = 0; i < 4; i++) {\n ptsArray[i * 3] = (i % 2) * 2 - 1.0;\n ptsArray[i * 3 + 1] = i > 1 ? 1.0 : -1.0;\n ptsArray[i * 3 + 2] = -1.0;\n }\n\n const cellArray = new Uint16Array(8);\n cellArray[0] = 3;\n cellArray[1] = 0;\n cellArray[2] = 1;\n cellArray[3] = 3;\n cellArray[4] = 3;\n cellArray[5] = 0;\n cellArray[6] = 3;\n cellArray[7] = 2;\n\n // const dim = 12.0;\n // const ptsArray = new Float32Array(3 * dim * dim);\n // for (let i = 0; i < dim; i++) {\n // for (let j = 0; j < dim; j++) {\n // const offset = ((i * dim) + j) * 3;\n // ptsArray[offset] = (2.0 * (i / (dim - 1.0))) - 1.0;\n // ptsArray[offset + 1] = (2.0 * (j / (dim - 1.0))) - 1.0;\n // ptsArray[offset + 2] = -1.0;\n // }\n // }\n\n // const cellArray = new Uint16Array(8 * (dim - 1) * (dim - 1));\n // for (let i = 0; i < dim - 1; i++) {\n // for (let j = 0; j < dim - 1; j++) {\n // const offset = 8 * ((i * (dim - 1)) + j);\n // cellArray[offset] = 3;\n // cellArray[offset + 1] = (i * dim) + j;\n // cellArray[offset + 2] = (i * dim) + 1 + j;\n // cellArray[offset + 3] = ((i + 1) * dim) + 1 + j;\n // cellArray[offset + 4] = 3;\n // cellArray[offset + 5] = (i * dim) + j;\n // cellArray[offset + 6] = ((i + 1) * dim) + 1 + j;\n // cellArray[offset + 7] = ((i + 1) * dim) + j;\n // }\n // }\n\n const points = vtkDataArray.newInstance({\n numberOfComponents: 3,\n values: ptsArray,\n });\n points.setName('points');\n const cells = vtkDataArray.newInstance({\n numberOfComponents: 1,\n values: cellArray,\n });\n model.tris.getCABO().createVBO(cells, 'polys', Representation.SURFACE, {\n points,\n cellOffset: 0,\n });\n }\n\n model.VBOBuildTime.modified();\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n context: null,\n VBOBuildTime: null,\n scalarTexture: null,\n scalarTextureString: null,\n opacityTexture: null,\n opacityTextureString: null,\n colorTexture: null,\n colortextureString: null,\n lightingTexture: null,\n lightingTextureString: null,\n jitterTexture: null,\n tris: null,\n framebuffer: null,\n copyShader: null,\n copyVAO: null,\n lastXYF: 1.0,\n targetXYF: 1.0,\n zBufferTexture: null,\n lastZBufferTexture: null,\n lastLightComplexity: 0,\n fullViewportTime: 1.0,\n idxToView: null,\n idxNormalMatrix: null,\n avgWindowArea: 0.0,\n avgFrameTime: 0.0,\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n model.VBOBuildTime = {};\n macro.obj(model.VBOBuildTime, { mtime: 0 });\n\n model.tris = vtkHelper.newInstance();\n model.scalarTexture = vtkOpenGLTexture.newInstance();\n model.opacityTexture = vtkOpenGLTexture.newInstance();\n model.colorTexture = vtkOpenGLTexture.newInstance();\n model.lightingTexture = vtkOpenGLTexture.newInstance();\n model.jitterTexture = vtkOpenGLTexture.newInstance();\n model.jitterTexture.setWrapS(Wrap.REPEAT);\n model.jitterTexture.setWrapT(Wrap.REPEAT);\n model.framebuffer = vtkOpenGLFramebuffer.newInstance();\n\n model.idxToView = mat4.create();\n model.idxNormalMatrix = mat3.create();\n\n // Build VTK API\n macro.setGet(publicAPI, model, ['context']);\n\n // Object methods\n vtkOpenGLVolumeMapper(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkOpenGLVolumeMapper');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/VolumeMapper/index.js","import macro from 'vtk.js/Sources/macro';\nimport vtkViewNode from 'vtk.js/Sources/Rendering/SceneGraph/ViewNode';\n\n// ----------------------------------------------------------------------------\n// vtkOpenGLActor methods\n// ----------------------------------------------------------------------------\n\nfunction vtkGenericWidgetRepresentation(publicAPI, model) {\n // Set our className\n model.classHierarchy.push('vtkGenericWidgetRepresentation');\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Inheritance\n vtkViewNode.extend(publicAPI, model, initialValues);\n\n // Object methods\n vtkGenericWidgetRepresentation(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend);\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/GenericWidgetRepresentation/index.js","import macro from 'vtk.js/Sources/macro';\n\n// ----------------------------------------------------------------------------\n// vtkViewNodeFactory methods\n// ----------------------------------------------------------------------------\n\nfunction vtkViewNodeFactory(publicAPI, model) {\n // Make sure our overrides is just for our instance not shared with everyone...\n model.overrides = {};\n\n // Set our className\n model.classHierarchy.push('vtkViewNodeFactory');\n\n publicAPI.createNode = (dataObject) => {\n if (dataObject.isDeleted()) {\n return null;\n }\n\n let cpt = 0;\n let className = dataObject.getClassName(cpt++);\n let isObject = false;\n const keys = Object.keys(model.overrides);\n while (className && !isObject) {\n if (keys.indexOf(className) !== -1) {\n isObject = true;\n } else {\n className = dataObject.getClassName(cpt++);\n }\n }\n\n if (!isObject) {\n return null;\n }\n const vn = model.overrides[className]();\n vn.setMyFactory(publicAPI);\n return vn;\n };\n\n publicAPI.registerOverride = (className, func) => {\n model.overrides[className] = func;\n };\n}\n\n// ----------------------------------------------------------------------------\n// Object factory\n// ----------------------------------------------------------------------------\n\nconst DEFAULT_VALUES = {\n // overrides: {},\n};\n\n// ----------------------------------------------------------------------------\n\nexport function extend(publicAPI, model, initialValues = {}) {\n Object.assign(model, DEFAULT_VALUES, initialValues);\n\n // Build VTK API\n macro.obj(publicAPI, model);\n\n // Object methods\n vtkViewNodeFactory(publicAPI, model);\n}\n\n// ----------------------------------------------------------------------------\n\nexport const newInstance = macro.newInstance(extend, 'vtkViewNodeFactory');\n\n// ----------------------------------------------------------------------------\n\nexport default { newInstance, extend };\n\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/SceneGraph/ViewNodeFactory/index.js","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\":\".g-dicom-container\\n .g-item-info-header\\n i.icon-picture\\n | DICOM\\n.g-dicom-panes.clearfix\\n .g-dicom-left\\n .g-dicom-image\\n .g-dicom-filename\\n .g-dicom-controls\\n input.g-dicom-slider(type=\\\"range\\\", min=0, max=files.length - 1, step=1)\\n .right\\n button.g-dicom-first.btn.btn-sm.btn-default(title=\\\"First\\\")\\n i.icon-angle-double-left\\n button.g-dicom-previous.btn.btn-sm.btn-default(title=\\\"Previous\\\")\\n i.icon-angle-left\\n button.g-dicom-play.btn.btn-sm.btn-default(title=\\\"Play\\\")\\n i.icon-play\\n button.g-dicom-pause.btn.btn-sm.btn-default(title=\\\"Pause\\\")\\n i.icon-pause\\n button.g-dicom-next.btn.btn-sm.btn-default(title=\\\"Next\\\")\\n i.icon-angle-right\\n button.g-dicom-last.btn.btn-sm.btn-default(title=\\\"Last\\\")\\n i.icon-angle-double-right\\n .left\\n button.g-dicom-zoom-in.btn.btn-sm.btn-default(title=\\\"Zoom In\\\")\\n i.icon-zoom-in\\n button.g-dicom-zoom-out.btn.btn-sm.btn-default(title=\\\"Zoom Out\\\")\\n i.icon-zoom-out\\n button.g-dicom-reset-zoom.btn.btn-sm.btn-default(title=\\\"Reset Zoom\\\")\\n i.icon-search\\n button.g-dicom-auto-levels.btn.btn-sm.btn-default(title=\\\"Auto Levels\\\")\\n i.icon-ajust\\n .g-dicom-right\\n .g-dicom-tags\\n\"};\n;var locals_for_with = (locals || {});(function (files) {;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-container\\\"\\u003E\";\n;pug_debug_line = 2;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-item-info-header\\\"\\u003E\";\n;pug_debug_line = 3;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-picture\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"DICOM\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-panes clearfix\\\"\\u003E\";\n;pug_debug_line = 6;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-left\\\"\\u003E\";\n;pug_debug_line = 7;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 8;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-filename\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-controls\\\"\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cinput\" + (\" class=\\\"g-dicom-slider\\\"\"+\" type=\\\"range\\\" min=\\\"0\\\"\"+pug.attr(\"max\", files.length - 1, true, true)+\" step=\\\"1\\\"\") + \"\\u003E\";\n;pug_debug_line = 11;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"right\\\"\\u003E\";\n;pug_debug_line = 12;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-first btn btn-sm btn-default\\\" title=\\\"First\\\"\\u003E\";\n;pug_debug_line = 13;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-angle-double-left\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 14;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-previous btn btn-sm btn-default\\\" title=\\\"Previous\\\"\\u003E\";\n;pug_debug_line = 15;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-angle-left\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 16;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-play btn btn-sm btn-default\\\" title=\\\"Play\\\"\\u003E\";\n;pug_debug_line = 17;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-play\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 18;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-pause btn btn-sm btn-default\\\" title=\\\"Pause\\\"\\u003E\";\n;pug_debug_line = 19;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-pause\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 20;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-next btn btn-sm btn-default\\\" title=\\\"Next\\\"\\u003E\";\n;pug_debug_line = 21;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-angle-right\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 22;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-last btn btn-sm btn-default\\\" title=\\\"Last\\\"\\u003E\";\n;pug_debug_line = 23;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-angle-double-right\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 24;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"left\\\"\\u003E\";\n;pug_debug_line = 25;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-zoom-in btn btn-sm btn-default\\\" title=\\\"Zoom In\\\"\\u003E\";\n;pug_debug_line = 26;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-zoom-in\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 27;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-zoom-out btn btn-sm btn-default\\\" title=\\\"Zoom Out\\\"\\u003E\";\n;pug_debug_line = 28;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-zoom-out\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 29;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-reset-zoom btn btn-sm btn-default\\\" title=\\\"Reset Zoom\\\"\\u003E\";\n;pug_debug_line = 30;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-search\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\";\n;pug_debug_line = 31;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cbutton class=\\\"g-dicom-auto-levels btn btn-sm btn-default\\\" title=\\\"Auto Levels\\\"\\u003E\";\n;pug_debug_line = 32;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-ajust\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n;pug_debug_line = 33;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-right\\\"\\u003E\";\n;pug_debug_line = 34;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomItem.pug\";\npug_html = pug_html + \"\\u003Cdiv class=\\\"g-dicom-tags\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"files\" in locals_for_with?locals_for_with.files:typeof files!==\"undefined\"?files:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/templates/dicomItem.pug","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\":\"table.table.table-condensed.table-hover\\n thead\\n tr\\n th Name\\n th Value\\n tbody\\n each tag in tags\\n tr\\n td= tag.name\\n td= tag.value\\n\"};\n;var locals_for_with = (locals || {});(function (tags) {;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctable class=\\\"table table-condensed table-hover\\\"\\u003E\";\n;pug_debug_line = 2;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Cthead\\u003E\";\n;pug_debug_line = 3;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctr\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Cth\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"Name\\u003C\\u002Fth\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Cth\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"Value\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Fthead\\u003E\";\n;pug_debug_line = 6;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctbody\\u003E\";\n;pug_debug_line = 7;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\n// iterate tags\n;(function(){\n var $$obj = tags;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var tag = $$obj[pug_index0];\n;pug_debug_line = 8;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctr\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctd\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = tag.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctd\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = tag.value) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var tag = $$obj[pug_index0];\n;pug_debug_line = 8;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctr\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctd\\u003E\";\n;pug_debug_line = 9;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = tag.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + \"\\u003Ctd\\u003E\";\n;pug_debug_line = 10;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FdicomSliceMetadata.pug\";\npug_html = pug_html + (pug.escape(null == (pug_interp = tag.value) ? \"\" : pug_interp)) + \"\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\";}.call(this,\"tags\" in locals_for_with?locals_for_with.tags:typeof tags!==\"undefined\"?tags:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/templates/dicomSliceMetadata.pug","var pug = require(\"!../../../pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {\"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\":\"li(role='presentation')\\n a.g-dicom-parse-item(role='menuitem')\\n i.icon-recycle\\n | Extract DICOM image\\nli.divider(role=\\\"presentation\\\")\\n\"};\n;pug_debug_line = 1;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\";\npug_html = pug_html + \"\\u003Cli role=\\\"presentation\\\"\\u003E\";\n;pug_debug_line = 2;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\";\npug_html = pug_html + \"\\u003Ca class=\\\"g-dicom-parse-item\\\" role=\\\"menuitem\\\"\\u003E\";\n;pug_debug_line = 3;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\";\npug_html = pug_html + \"\\u003Ci class=\\\"icon-recycle\\\"\\u003E\\u003C\\u002Fi\\u003E\";\n;pug_debug_line = 4;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\";\npug_html = pug_html + \"Extract DICOM image\\u003C\\u002Fa\\u003E\\u003C\\u002Fli\\u003E\";\n;pug_debug_line = 5;pug_debug_filename = \"\\u002Fopt\\u002Fgirder\\u002Fgirder\\u002Fweb_client\\u002Fnode_modules\\u002F@girder\\u002Fdicom-viewer\\u002Ftemplates\\u002FparseDicomItem.pug\";\npug_html = pug_html + \"\\u003Cli class=\\\"divider\\\" role=\\\"presentation\\\"\\u003E\\u003C\\u002Fli\\u003E\";} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;};\nmodule.exports = template;\n\n\n// WEBPACK FOOTER //\n// ./~/@girder/dicom-viewer/templates/parseDicomItem.pug","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/stylesheets/dicomItem.styl\n// module id = 157\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/stylesheets/dicomSliceMetadata.styl\n// module id = 158\n// module chunks = 0","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\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// 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// 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 if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/path-browserify/index.js\n// module id = 160\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkSphereMapperVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// this shader implements imposters in OpenGL for Spheres\\n\\nattribute vec4 vertexMC;\\nattribute vec2 offsetMC;\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\nuniform mat3 normalMatrix; // transform model coordinate directions to view coordinates\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\nvarying vec4 vertexVCVSOutput;\\nvarying float radiusVCVSOutput;\\nvarying vec3 centerVCVSOutput;\\n\\nuniform int cameraParallel;\\n\\nvoid main()\\n{\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n // compute the projected vertex position\\n vertexVCVSOutput = MCVCMatrix * vertexMC;\\n centerVCVSOutput = vertexVCVSOutput.xyz;\\n radiusVCVSOutput = length(offsetMC)*0.5;\\n\\n // make the triangle face the camera\\n if (cameraParallel == 0)\\n {\\n vec3 dir = normalize(-vertexVCVSOutput.xyz);\\n vec3 base2 = normalize(cross(dir,vec3(1.0,0.0,0.0)));\\n vec3 base1 = cross(base2,dir);\\n vertexVCVSOutput.xyz = vertexVCVSOutput.xyz + offsetMC.x*base1 + offsetMC.y*base2;\\n }\\n else\\n {\\n // add in the offset\\n vertexVCVSOutput.xy = vertexVCVSOutput.xy + offsetMC;\\n }\\n\\n gl_Position = VCDCMatrix * vertexVCVSOutput;\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkSphereMapperVS.glsl\n// module id = 161\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkStickMapperVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// this shader implements imposters in OpenGL for Sticks\\n\\nattribute vec4 vertexMC;\\nattribute vec3 orientMC;\\nattribute vec4 offsetMC;\\nattribute float radiusMC;\\n\\n// optional normal declaration\\n//VTK::Normal::Dec\\n\\n//VTK::Picking::Dec\\n\\n// Texture coordinates\\n//VTK::TCoord::Dec\\n\\nuniform mat3 normalMatrix; // transform model coordinate directions to view coordinates\\n\\n// material property values\\n//VTK::Color::Dec\\n\\n// clipping plane vars\\n//VTK::Clip::Dec\\n\\n// camera and actor matrix values\\n//VTK::Camera::Dec\\n\\nvarying vec4 vertexVCVSOutput;\\nvarying float radiusVCVSOutput;\\nvarying float lengthVCVSOutput;\\nvarying vec3 centerVCVSOutput;\\nvarying vec3 orientVCVSOutput;\\n\\nuniform int cameraParallel;\\n\\nvoid main()\\n{\\n //VTK::Picking::Impl\\n\\n //VTK::Color::Impl\\n\\n //VTK::Normal::Impl\\n\\n //VTK::TCoord::Impl\\n\\n //VTK::Clip::Impl\\n\\n vertexVCVSOutput = MCVCMatrix * vertexMC;\\n centerVCVSOutput = vertexVCVSOutput.xyz;\\n radiusVCVSOutput = radiusMC;\\n lengthVCVSOutput = length(orientMC);\\n orientVCVSOutput = normalMatrix * normalize(orientMC);\\n\\n // make sure it is pointing out of the screen\\n if (orientVCVSOutput.z < 0.0)\\n {\\n orientVCVSOutput = -orientVCVSOutput;\\n }\\n\\n // make the basis\\n vec3 xbase;\\n vec3 ybase;\\n vec3 dir = vec3(0.0,0.0,1.0);\\n if (cameraParallel == 0)\\n {\\n dir = normalize(-vertexVCVSOutput.xyz);\\n }\\n if (abs(dot(dir,orientVCVSOutput)) == 1.0)\\n {\\n xbase = normalize(cross(vec3(0.0,1.0,0.0),orientVCVSOutput));\\n ybase = cross(xbase,orientVCVSOutput);\\n }\\n else\\n {\\n xbase = normalize(cross(orientVCVSOutput,dir));\\n ybase = cross(orientVCVSOutput,xbase);\\n }\\n\\n vec3 offsets = offsetMC.xyz*2.0-1.0;\\n vertexVCVSOutput.xyz = vertexVCVSOutput.xyz +\\n radiusVCVSOutput*offsets.x*xbase +\\n radiusVCVSOutput*offsets.y*ybase +\\n 0.5*lengthVCVSOutput*offsets.z*orientVCVSOutput;\\n\\n gl_Position = VCDCMatrix * vertexVCVSOutput;\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkStickMapperVS.glsl\n// module id = 162\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\nvarying vec3 vertexVCVSOutput;\\n\\n// camera values\\nuniform float camThick;\\nuniform float camNear;\\nuniform float camFar;\\n\\n// values describing the volume geometry\\nuniform vec3 vOriginVC;\\nuniform vec3 vSize;\\nuniform vec3 vPlaneNormal0;\\nuniform float vPlaneDistance0;\\nuniform vec3 vPlaneNormal1;\\nuniform float vPlaneDistance1;\\nuniform vec3 vPlaneNormal2;\\nuniform float vPlaneDistance2;\\nuniform vec3 vPlaneNormal3;\\nuniform float vPlaneDistance3;\\nuniform vec3 vPlaneNormal4;\\nuniform float vPlaneDistance4;\\nuniform vec3 vPlaneNormal5;\\nuniform float vPlaneDistance5;\\n\\n// opacity and color textures\\nuniform sampler2D otexture;\\nuniform float oshift;\\nuniform float oscale;\\nuniform sampler2D ctexture;\\nuniform float cshift;\\nuniform float cscale;\\n\\n// jitter texture\\nuniform sampler2D jtexture;\\n\\n// some 3D texture values\\nuniform sampler2D texture1;\\nuniform float sampleDistance;\\nuniform vec3 vVCToIJK;\\nuniform float texWidth;\\nuniform float texHeight;\\nuniform int xreps;\\nuniform float xstride;\\nuniform float ystride;\\nuniform int repWidth;\\nuniform int repHeight;\\nuniform int repDepth;\\n\\n// declaration for intermixed geometry\\n//VTK::ZBuffer::Dec\\n\\n// Lighting values\\n//VTK::Light::Dec\\n\\n// normal calc\\n//VTK::Normal::Dec\\n\\n// gradient opacity\\n//VTK::GradientOpacity::Dec\\n\\nvec2 getTextureCoord(vec3 ijk, float offset)\\n{\\n // uncomment the following line to see the packed texture\\n // return vec2(ijk.x/float(repWidth), ijk.y/float(repHeight));\\n int z = int(ijk.z + offset);\\n int yz = z / xreps;\\n int xz = z - yz*xreps;\\n\\n float ni = (ijk.x + float(xz * repWidth))/xstride;\\n float nj = (ijk.y + float(yz * repHeight))/ystride;\\n\\n vec2 tpos = vec2(ni/texWidth, nj/texHeight);\\n\\n return tpos;\\n}\\n\\n// because scalars may be encoded\\n// this func will decode them as needed\\nfloat getScalarValue(vec2 tpos)\\n{\\n //VTK::ScalarValueFunction::Impl\\n}\\n\\nvec2 getRayPointIntersectionBounds(\\n vec3 rayPos, vec3 rayDir,\\n vec3 planeDir, float planeDist,\\n vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY,\\n float vSize1, float vSize2)\\n{\\n float result = dot(rayDir, planeDir);\\n if (result == 0.0)\\n {\\n return tbounds;\\n }\\n result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result;\\n vec3 xposVC = rayPos + rayDir*result;\\n vec3 vxpos = xposVC - vOriginVC;\\n vec2 vpos = vec2(\\n dot(vxpos, vPlaneX),\\n dot(vxpos, vPlaneY));\\n\\n // on some apple nvidia systems this does not work\\n // if (vpos.x < 0.0 || vpos.x > vSize1 ||\\n // vpos.y < 0.0 || vpos.y > vSize2)\\n // even just\\n // if (vpos.x < 0.0 || vpos.y < 0.0)\\n // fails\\n // so instead we compute a value that represents in and out\\n //and then compute the return using this value\\n float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds\\n float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out\\n\\n return mix(\\n vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value\\n tbounds, // out value\\n check); // 0 in 1 out\\n}\\n\\nvoid main()\\n{\\n float scalar;\\n vec4 scalarComps;\\n\\n // camera is at 0,0,0 so rayDir for perspective is just the vc coord\\n vec3 rayDir = normalize(vertexVCVSOutput);\\n vec2 tbounds = vec2(100.0*camFar, -1.0);\\n\\n // all this is in View Coordinates\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal0, vPlaneDistance0, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal1, vPlaneDistance1, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal2, vPlaneDistance2, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal3, vPlaneDistance3, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal4, vPlaneDistance4, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal5, vPlaneDistance5, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n\\n // do not go behind front clipping plane\\n tbounds.x = max(0.0,tbounds.x);\\n\\n // do not go PAST far clipping plane\\n float farDist = -camThick/rayDir.z;\\n tbounds.y = min(farDist,tbounds.y);\\n\\n // Do not go past the zbuffer value if set\\n // This is used for intermixing opaque geometry\\n //VTK::ZBuffer::Impl\\n\\n // do we need to composite?\\n if (tbounds.y > tbounds.x)\\n {\\n // compute starting and ending values in volume space\\n vec3 startVC = vertexVCVSOutput + tbounds.x*rayDir;\\n startVC = startVC - vOriginVC;\\n\\n // vpos and endvpos are in VolumeCoords not Index yet\\n vec3 vpos = vec3(\\n dot(startVC, vPlaneNormal0),\\n dot(startVC, vPlaneNormal2),\\n dot(startVC, vPlaneNormal4));\\n vec3 endVC = vertexVCVSOutput + tbounds.y*rayDir;\\n endVC = endVC - vOriginVC;\\n vec3 endvpos = vec3(\\n dot(endVC, vPlaneNormal0),\\n dot(endVC, vPlaneNormal2),\\n dot(endVC, vPlaneNormal4));\\n vec3 vdelta = endvpos - vpos;\\n float numSteps = length(vdelta) / sampleDistance;\\n vdelta = vdelta / numSteps;\\n\\n // start slightly inside and apply some jitter\\n float jitter = texture2D(jtexture, gl_FragCoord.xy/32.0).r;\\n vpos = vpos + vdelta*(0.01 + 0.98*jitter);\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n int count = int(numSteps - 0.2); // end slightly inside\\n\\n vec3 ijk = vpos * vVCToIJK;\\n vdelta = vdelta * vVCToIJK;\\n for (int i = 0; i < //VTK::MaximumSamplesValue ; ++i)\\n {\\n // compute the 2d texture coordinate/s\\n //VTK::ComputeTCoords\\n\\n // compute the scalar\\n //VTK::ScalarFunction\\n\\n // now map through opacity and color\\n vec4 tcolor = texture2D(ctexture, vec2(scalar * cscale + cshift, 0.5));\\n tcolor.a = texture2D(otexture, vec2(scalar * oscale + oshift, 0.5)).r;\\n\\n // compute the normal if needed\\n //VTK::Normal::Impl\\n\\n // handle gradient opacity\\n //VTK::GradientOpacity::Impl\\n\\n // handle lighting\\n //VTK::Light::Impl\\n\\n float mix = (1.0 - color.a);\\n\\n // this line should not be needed but nvidia seems to not handle\\n // the break correctly on windows/chrome 58 angle\\n mix = mix * sign(max(float(count - i + 1), 0.0));\\n\\n color = color + vec4(tcolor.rgb*tcolor.a, tcolor.a)*mix;\\n if (i >= count) { break; }\\n if (color.a > 0.99) { color.a = 1.0; break; }\\n ijk += vdelta;\\n }\\n\\n gl_FragData[0] = vec4(color.rgb/color.a, color.a);\\n // gl_FragData[0] = vec4(tbounds.y/farDist, tbounds.x/farDist, color.b/color.a, 1.0);\\n }\\n else\\n {\\n discard;\\n }\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS.glsl\n// module id = 163\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataFS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n// Template for the polydata mappers fragment shader\\n\\n// the output of this shader\\n//VTK::Output::Dec\\n\\nvarying vec3 vertexVCVSOutput;\\n\\n// camera values\\nuniform float camThick;\\nuniform float camNear;\\nuniform float camFar;\\n\\n// values describing the volume geometry\\nuniform vec3 vOriginVC;\\nuniform vec3 vSize;\\nuniform vec3 vPlaneNormal0;\\nuniform float vPlaneDistance0;\\nuniform vec3 vPlaneNormal1;\\nuniform float vPlaneDistance1;\\nuniform vec3 vPlaneNormal2;\\nuniform float vPlaneDistance2;\\nuniform vec3 vPlaneNormal3;\\nuniform float vPlaneDistance3;\\nuniform vec3 vPlaneNormal4;\\nuniform float vPlaneDistance4;\\nuniform vec3 vPlaneNormal5;\\nuniform float vPlaneDistance5;\\n\\n// opacity and color textures\\nuniform sampler2D otexture;\\nuniform float oshift;\\nuniform float oscale;\\nuniform sampler2D ctexture;\\nuniform float cshift;\\nuniform float cscale;\\n\\n// jitter texture\\nuniform sampler2D jtexture;\\n\\n// some 3D texture values\\nuniform highp sampler3D texture1;\\nuniform float sampleDistance;\\nuniform vec3 vVCToIJK;\\n\\n// declaration for intermixed geometry\\n//VTK::ZBuffer::Dec\\n\\n// Lighting values\\n//VTK::Light::Dec\\n\\n// normal calc\\n//VTK::Normal::Dec\\n\\n// gradient opacity\\n//VTK::GradientOpacity::Dec\\n\\nvec2 getRayPointIntersectionBounds(\\n vec3 rayPos, vec3 rayDir,\\n vec3 planeDir, float planeDist,\\n vec2 tbounds, vec3 vPlaneX, vec3 vPlaneY,\\n float vSize1, float vSize2)\\n{\\n float result = dot(rayDir, planeDir);\\n if (result == 0.0)\\n {\\n return tbounds;\\n }\\n result = -1.0 * (dot(rayPos, planeDir) + planeDist) / result;\\n vec3 xposVC = rayPos + rayDir*result;\\n vec3 vxpos = xposVC - vOriginVC;\\n vec2 vpos = vec2(\\n dot(vxpos, vPlaneX),\\n dot(vxpos, vPlaneY));\\n\\n // on some apple nvidia systems this does not work\\n // if (vpos.x < 0.0 || vpos.x > vSize1 ||\\n // vpos.y < 0.0 || vpos.y > vSize2)\\n // even just\\n // if (vpos.x < 0.0 || vpos.y < 0.0)\\n // fails\\n // so instead we compute a value that represents in and out\\n //and then compute the return using this value\\n float xcheck = max(0.0, vpos.x * (vpos.x - vSize1)); // 0 means in bounds\\n float check = sign(max(xcheck, vpos.y * (vpos.y - vSize2))); // 0 means in bounds, 1 = out\\n\\n return mix(\\n vec2(min(tbounds.x, result), max(tbounds.y, result)), // in value\\n tbounds, // out value\\n check); // 0 in 1 out\\n}\\n\\nvoid main()\\n{\\n float scalar;\\n vec4 scalarComps;\\n\\n // camera is at 0,0,0 so rayDir for perspective is just the vc coord\\n vec3 rayDir = normalize(vertexVCVSOutput);\\n vec2 tbounds = vec2(100.0*camFar, -1.0);\\n\\n // all this is in View Coordinates\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal0, vPlaneDistance0, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal1, vPlaneDistance1, tbounds, vPlaneNormal2, vPlaneNormal4,\\n vSize.y, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal2, vPlaneDistance2, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal3, vPlaneDistance3, tbounds, vPlaneNormal0, vPlaneNormal4,\\n vSize.x, vSize.z);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal4, vPlaneDistance4, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n tbounds = getRayPointIntersectionBounds(vertexVCVSOutput, rayDir,\\n vPlaneNormal5, vPlaneDistance5, tbounds, vPlaneNormal0, vPlaneNormal2,\\n vSize.x, vSize.y);\\n\\n // do not go behind front clipping plane\\n tbounds.x = max(0.0,tbounds.x);\\n\\n // do not go PAST far clipping plane\\n float farDist = -camThick/rayDir.z;\\n tbounds.y = min(farDist,tbounds.y);\\n\\n // Do not go past the zbuffer value if set\\n // This is used for intermixing opaque geometry\\n //VTK::ZBuffer::Impl\\n\\n // do we need to composite?\\n if (tbounds.y > tbounds.x)\\n {\\n // compute starting and ending values in volume space\\n vec3 startVC = vertexVCVSOutput + tbounds.x*rayDir;\\n startVC = startVC - vOriginVC;\\n\\n // vpos and endvpos are in VolumeCoords not Index yet\\n vec3 vpos = vec3(\\n dot(startVC, vPlaneNormal0),\\n dot(startVC, vPlaneNormal2),\\n dot(startVC, vPlaneNormal4));\\n vec3 endVC = vertexVCVSOutput + tbounds.y*rayDir;\\n endVC = endVC - vOriginVC;\\n vec3 endvpos = vec3(\\n dot(endVC, vPlaneNormal0),\\n dot(endVC, vPlaneNormal2),\\n dot(endVC, vPlaneNormal4));\\n vec3 vdelta = endvpos - vpos;\\n float numSteps = length(vdelta) / sampleDistance;\\n vdelta = vdelta / numSteps;\\n\\n // start slightly inside and apply some jitter\\n float jitter = texture2D(jtexture, gl_FragCoord.xy/32.0).r;\\n vpos = vpos + vdelta*(0.01 + 0.98*jitter);\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n\\n vec3 ijk = vpos * vVCToIJK;\\n vdelta = vdelta * vVCToIJK;\\n float i = 0.0;\\n while (i < numSteps - 0.2)\\n {\\n // compute the scalar\\n scalar = texture(texture1, ijk).r;\\n\\n // now map through opacity and color\\n vec4 tcolor = texture2D(ctexture, vec2(scalar * cscale + cshift, 0.5));\\n tcolor.a = texture2D(otexture, vec2(scalar * oscale + oshift, 0.5)).r;\\n\\n // compute the normal if needed\\n //VTK::Normal::Impl\\n\\n // handle gradient opacity\\n //VTK::GradientOpacity::Impl\\n\\n // handle lighting\\n //VTK::Light::Impl\\n\\n float mix = (1.0 - color.a);\\n\\n color = color + vec4(tcolor.rgb*tcolor.a, tcolor.a)*mix;\\n if (color.a > 0.99) { color.a = 1.0; break; }\\n ijk += vdelta;\\n i += 1.0;\\n }\\n\\n gl_FragData[0] = vec4(color.rgb/color.a, color.a);\\n // gl_FragData[0] = vec4(tbounds.y/farDist, tbounds.x/farDist, color.b/color.a, 1.0);\\n }\\n else\\n {\\n discard;\\n }\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeFS2.glsl\n// module id = 164\n// module chunks = 0","module.exports = \"//VTK::System::Dec\\n\\n/*=========================================================================\\n\\n Program: Visualization Toolkit\\n Module: vtkPolyDataVS.glsl\\n\\n Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen\\n All rights reserved.\\n See Copyright.txt or http://www.kitware.com/Copyright.htm for details.\\n\\n This software is distributed WITHOUT ANY WARRANTY; without even\\n the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\\n PURPOSE. See the above copyright notice for more information.\\n\\n=========================================================================*/\\n\\nattribute vec4 vertexDC;\\n\\nvarying vec3 vertexVCVSOutput;\\nuniform mat4 DCVCMatrix;\\n\\nuniform float dcxmin;\\nuniform float dcxmax;\\nuniform float dcymin;\\nuniform float dcymax;\\n\\nvoid main()\\n{\\n // dcsmall is the device coords reduced to the\\n // x y area covered by the volume\\n vec4 dcsmall = vec4(\\n dcxmin + 0.5 * (vertexDC.x + 1.0) * (dcxmax - dcxmin),\\n dcymin + 0.5 * (vertexDC.y + 1.0) * (dcymax - dcymin),\\n vertexDC.z,\\n vertexDC.w);\\n vec4 vcpos = DCVCMatrix * dcsmall;\\n vertexVCVSOutput = vcpos.xyz/vcpos.w;\\n gl_Position = dcsmall;\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@girder/dicom-viewer/~/vtk.js/Sources/Rendering/OpenGL/glsl/vtkVolumeVS.glsl\n// module id = 165\n// module chunks = 0","module.exports = (__webpack_require__(3))(1);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/View.js from dll-reference girder_lib\n// module id = 166\n// module chunks = 0","module.exports = (__webpack_require__(3))(10);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/auth.js from dll-reference girder_lib\n// module id = 167\n// module chunks = 0","module.exports = (__webpack_require__(3))(123);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/utilities/PluginUtils.js from dll-reference girder_lib\n// module id = 168\n// module chunks = 0","module.exports = (__webpack_require__(3))(135);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/body/ItemView.js from dll-reference girder_lib\n// module id = 169\n// module chunks = 0","module.exports = (__webpack_require__(3))(29);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/views/widgets/SearchFieldWidget.js from dll-reference girder_lib\n// module id = 170\n// module chunks = 0","module.exports = (__webpack_require__(3))(3);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./node_modules/underscore/modules/index-all.js from dll-reference girder_lib\n// module id = 171\n// module chunks = 0","module.exports = (__webpack_require__(3))(5);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/events.js from dll-reference girder_lib\n// module id = 172\n// module chunks = 0","module.exports = (__webpack_require__(3))(61);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/models/FileModel.js from dll-reference girder_lib\n// module id = 173\n// module chunks = 0","module.exports = (__webpack_require__(3))(79);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/collections/FileCollection.js from dll-reference girder_lib\n// module id = 174\n// module chunks = 0","module.exports = (__webpack_require__(3))(8);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ./src/constants.js from dll-reference girder_lib\n// module id = 175\n// module chunks = 0","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// crypto (ignored)\n// module id = 177\n// module chunks = 0"],"sourceRoot":""}